对于编程语言来说,计算机本质上使用二进制来处理所有数据,内存地址通常用十六进制表示,Unix系统文件权限使用八进制表示,所以进制是学习计算机不可或缺的部分。我们分为四个部分来将进制之间的转换解决掉。
首先了解各个进制之间的区别和特点:
二进制:0,1,满二进一,以0(数字0)b(B)开头。
八进制:0-7,满八进一,以数字0开头。
十进制:0-9,满十进一。
十六进制:0-9,a-f(A-F),满十六进一,以0(数字0)x(X)开头。
1.二,八,十六转为十进制
二转为十进制:从最低位开始,将每一位上的数提取出来,乘以2的(位数减一)次方,然后求和
例如:0b1011=1*2^0+1*2^1+0*2^2+1*2^3=11
八进制转为十进制:从最低位开始,将每一位上的数提取出来,乘以8的(位数减一)次方,然后求和
例如0234=4*8^0+3*8^1+2*8^2=156
十六进制转为十进制:从最低位开始,将每一位上的数提取出来,乘以16(位数减一)次方,然后求和
例如:0x23a=10*16^0+3*16^1+2*16^2=570(a对应10,b对应11,直到f对应15)
2.十进制转为二,八,十六进制
十进制转为二进制:将该数不断地除以2,直到商为0为止,然后将每步得到的系数倒过来,就是对应的二进制。
例如:34的二进制为多少?34除以2,得17,余数为0,再除以2,得8,余数为1,再除以2,得4,余数为0,再除以2,得2,余数为0,再除以2,得1,余数为0(可以说刚开始只看余数,最后要看最后的商和余数,倒过来写就是该得到的二进制数。画图的话更简单直观)答案为0b100010
十进制转为八进制:将该数不断地除以8,直到商为0为止,然后将每步得到的系数倒过来,就是对应的八进制。
例如:131的八进制数为0203(同上,第一个0表示为八进制)
十进制转为十六进制:将该数不断地除以16,直到商为0为止,然后将每步得到的系数倒过来,就是对应的十六进制。
例如:237的十六进制数为0xED(或0xed或0XED或0xed)(同上,0x为十六进制的表示)
3.二进制转八,十六进制
二进制转八进制:从最低位开始,将二进制数每三位一组,每一组转成对应的八进制数,不够的在前面添0,从后往前依次写出。
例如:0b 11 010 101=0(八进制表示数)3(11的八进制数)2(010的八进制数)5(101的八进制数)=0325
二进制转十六进制:从最低位开始,将二进制数没四位一组,每一组转成对应的十六进制数即可。
例如:0b1101 0101=0x(十六进制的表示方式)D(1101的十六进制数)5(0101的十六进制数)=0xD5
4.十六,八进制转为二进制
八进制转二进制:(与二进制转八进制刚好相反)将每一位,转成对应的二进制数即可
例如:0 2 3 7=0b(二进制数的表示)010(2的二进制数)011(3的二进制数)111(7的二进制数)=0b010011111
十六进制转二进制:(与上面同理)将每一位,转成对应的二进制数即可
例如:0x23b=0b(二进制数的表示)0010(二的二进制数)0011(3的二进制数)1011(b的二进制数)
最后通过这四种分类,来方便记忆进制之间的转换。
此外对于十六进制和八进制之间的转换不能直接转换,可以通过十进制和二进制作为桥梁进行转换。
感谢您的观看,有什么不对的地方也希望您能指出,向您学习。