进制之间的转换

综合杂记 / 205人浏览 / 0人评论

一、 二进制与十进制之间的转换

   a.二进制转十进制(不分整数和小数从最后一位算起,每一位上的数乘以2的几次方,这个次数由这个数字所在的位置决定,从零位开始,然后相加)  


01101011.001 转十进制:

第-3   1乘2的-3次方=0.125

第-2   0乘2的-2次方=0

第-1   0乘2的-1次方=0

第0位  1乘2的0次方=1

  1   1乘2的1次方=2

  2  0乘2的2次方=0

  3  1乘2的3次方=8 

  4   0乘2的4次方=0

  5   1乘2的5次方=32

  6  1乘2的6次方=64

  7  0乘2的7次方=0

然后:1+2+0+8+0+32+64+0=107.125

01101011=107


  b.十进制转二进制

(整数:除2取余法是一个连续除2的过程,直到商出现0时位置,余数反向排列;)

整数23 转二级制:

23除2商11余1

11除2商5余1

 5除2商2余1

 2除2商1余0

 1除2商0余1

然后把余数反向排列 :23=10111

 

(小数:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分

为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数)

0.125 转二进制

第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;

第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;

第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;

第四步,读数,从第一位读起,读到最后一位,即为0.001。

23.125 转二进制10111.001

 

0.45 转二进制(保留到小数点第四位)

第一步,将0.45乘以2,得0.9,则整数部分为0,小数部分为0.9;

第二步, 将小数部分0.9乘以2,得1.8,则整数部分为1,小数部分为0.8;

第三步, 将小数部分0.8乘以2,得1.6,则整数部分为1,小数部分为0.6;

第四步, 将小数部分0.6乘以2,得1.2,则整数部分为1,小数部分为0.2; 算到这一步就可以了,因为只需要保留四位小数

第五步, 将小数部分0.2乘以2,得0.4,则整数部分为0,小数部分为0.4;

第六步, 将小数部分0.4乘以2,得0.8,则整数部分为0,小数部分为0.8;后面会一直循环重复

第七步, 将小数部分0.8乘以2,得1.6,则整数部分为1,小数部分为0.6;

。。。。。。

读整数不分,从第一位读起,读到最后一位,即为0.0111。

23.45(保留到小数点第四位)10111.0111


二、 二进制与八进制之间的转换(基础还是二进制和十进制之间的转换)

(取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到 的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位 时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位)这里的最高位,最低位和十进制的一样,前面的是最高位,后面的是最低位

   三位二进制表示一位八进制, 因为三位二进制数最大(111)的十进制数也就是7,所以就保证每位数都是0-7之间的数

   a.二进制转八进制

1100100 拆分成 : 001 100 100

001 1 这是由二级制转换成十进制得来的  0*2^2 +  0*2^1 + 1*2^0 = 1

100 4                             1*2^2 + 0*2^1 + 0*2^0 = 4

100 4                             1*2^2 + 0*2^1 + 0*2^0 = 4

依次读下来就是 144

1100100 =144

   b.八进制转二级制(脑海中有个概念,那就是你要用十进制转二进制先算出0-7每个数的二级制数表达方式,还是一样不够三位补零)

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

有了上面这个表,随便报一个数653524,你要明白八进制上的一位就对应三位二进制,653524有6位,所以二进制数就有3*6=18位,6用110代替,5用101代替,依次下来就是

110 101 011 101 010 100

 

三、 二进制与十六进制之间的转换(基础还是二进制和十进制之间的转换)

   四位二进制表示一位十六进制, 因为四位二进制数最大(1111)也就是十进制的表示法15即十六进制的表示法F,所以就保证每位数都是0-F之间的数

   a.二进制转十六进制

同样还是上面这个数:1100100 拆分 0110  0100 

0110 6

0100 4

1100100  = 64


b.十六进制转二进制(脑海中有个概念,那就是你要先算出0-F每个数的二级制数表达方式,还是一样不够四位补零)

1-0001

2-0010

3-0011

4-0100

5-0101

6-0110

7-0111

8-1000

9-1001

A-1010

B-1011

C-1100

D-1101

E-1110

F-1111


四、 十进制与十六进制之间的转换(其算法和二进制和十进制之间的算法一样只是,由2变成了16)     十进制与八进制之间的转换(其算法和二进制和十进制之间的算法一样只是,由2变成了8)

  a.十进制转十六进制

  123 转成十六进制

  123除16商7余B

  7除16商0余7

  结果就是7B

  b.十六进制转二进制

十六进数 2AF5

第0位: 5 * 16^0 = 5

第1位: F * 16^1 = 240

第2位: A * 16^2 = 2560

第3位: 2 * 16^3 = 8192

5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

2AF5 = 10997

0 条评论

还没有人发表评论

发表评论 取消回复