2021-08-29C语⾔之进制转换详解
1、⼆进制⽤数字0,1表⽰,原则是逢⼆进⼀,⼗进制数进位原则是逢⼗进⼀,此外计算机常⽤的还有⼋进制数,⼗六进制数。
不同数值之间的转换依据就是:不同数制的每⼀位所对应的权值不同。
解释⼀下什么是权值:
权值就是处在某⼀位上的“1”所表⽰的数值的⼤⼩,称为该位的位权。
⽐如,1010(2)表⽰⼀个⼆进制数,它的每⼀位的权值从右往左依次递增,最右边的数字0,在这个数的第0位,所以该位的权值是20;
这⾥强调⼀下:在数⼀个数的某⼀位时,从右往左依次是第0,1,2,3.…位。要从0开始数。这个数在第⼏位,它的权值就是⼏次幂。
从右往左数第⼆个数字是1,但是它不是第⼆位,它是第1位,所以它的权值是21,
所以1010(2)这个⼆进制数转换为⼗进制数就是每⼀位上的数乘以他们所对应的权值:0*20+1*21+0*22+1*23=10(10)
所以1010(2)这个⼆进制数⽤⼗进制数表⽰就是10。计算机语言排行榜2021
还有就是⼆进制⼩数的转换,⽐如10.1010(2)转换为⼗进制数:10.1010(2)=1*21+1*2-1+1*2-3=2.625(10)
这⾥要注意⼩数部分的权值与整数部分不同,以⼆进制为例,⼩数部分从左往右依次是(从1开始)第⼀位、第⼆位…那么每⼀位所对应的的权值是2-1,
第⼆位是2-2……
2、⼋进制数:它的权值:第0位是80,第1位是81,……
⽐如⼀个⼋进制数:567(8),它转换为⼗进制数是:7*80+6*81+5*82=375
⼋进制⼩数的转换,同⼆进制。
3、⼗六进制数:它的权值:第0位是160,第1位是161,……
⼗六进制因为某⼀位的最⼤数值可以是15,但是在某⼀位上⼜不可能⽤2位数表⽰,所以(习惯上)⽤⼤写英⽂字母A~F表⽰从10~15这六个2位数。
即:A=10 , B=11 , C=12 , D=13 , E=14 , F=15。
⽐如⼀个⼗六进制数:4F5,转换为⼗进制数为:4F5=5*160+F*161+4*162=1269(10)
⼗六进制⼩数的转换,同⼆进制。⽐如90.1(16)=9*161+1*16-1=144.0625(10)
以上是⼆、⼋、⼗六进制----->⼗进制。
4、那么⼗进制数----->⼆、⼋、⼗六进制数,接下来介绍。
⼗进制数转换为⼆进制数时,由于整数和⼩数转换⽅法不同,所以要把⼗进制数的整数和⼩数部分分别转换后加以合并。
⼗进制整数转⼆进制数采⽤:除2取余,逆序排列。将要转换的数除以2,得到商和余数,继续把商除以2,直到商为0,最后将余数逆序排列。
⼗进制⼩数转⼆进制数采⽤:乘2取整,正序排列。将要转换的⼩数乘以2,取出积的整数部分,再⽤余下的⼩数继续乘以2,再取出积的整数部分,这样进⾏到积的⼩数部分为0,或达到所要求的精度为⽌。
有些⼗进制⼩数⽆法⽤⼆进制精确的表达,转化时符合⼀定的精度即可,这是计算机浮点数运算不准确的原因。
⼗进制转换⼋进制同上。
⼗进制转换⼗六进制同上。
5、快速转换法,利⽤8421码:只适⽤于⼆、⼋、⼗六进制之间的转换。
⼆进制快速转换为⼋进制数:101(2)从右往左依次对应8421码的后三位1、2、4,因为4+2+1=7,正好是⼋进制数位的最⼤值7,所以每3位⼆进制表⽰⼀位⼋进制数。所以多位⼆进制数在转换时要从右往左,3位⼀组,最后如果不够3位补0即可。
如果⼆进制位某位的数值为1,则对应该位的8421码数值相加,如果⼆进制位某位的数值为0,则对应该位的8421码等于0,不⽤加。
101(2)=1+4=5(8)
⼆进制快速转换为⼗六进制数:1101(2)从右往左依次对应8421码的1、2、4、8,因为8421码4位数相加:1+2+4+8=15,正好对应⼗六进制数位上的最⼤值15,所以每4位⼆进制数表⽰⼀位⼗六进制数。所以多位⼆进制数在转换时要从右往左,4位⼀组,最后如果不够4位补0即可。
1101(2)=1+4+8=13=D(16)
相反的,利⽤8421码也可以完成对⼋、⼗六进制转换⼆进制的快速转换。
特别的:
如果⼀个⼋进制数要转换为⼗六进制数,不能直接转换,要先把⼋进制数转为⼆进制,再由⼆进制转为⼗六进制。
如果⼀个⼗六进制数要转换为⼋进制数,不能直接转换,要先把⼗六进制数转为⼆进制,再由⼆进制转为⼋进制。
end.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。