目录
十进制转换为二进制
整数转二进制
正整数转换
负整数转换
小数转二进制
小数转换
整数加小数转换
转换无限循环
二进制转换为十进制
转10进制正整数
转10进制负整数
转10进制小数
十进制转换为二进制
十进制转二进制分为整数转二进制,和小数转二进制
整数转二进制
正整数转换
- 采用"除2取余,逆序排列"法:
- 首先用十进制整数除以2,得到一个商和余数
- 然后再用得到的商除以2,又会得到一个商和余数
- 重复操作,一直到商为小于1时为止
- 然后将得到的所有余数全部排列起来,再将它反过来(逆序排列),一定要反过来!一定要反过来!一定要反过来!
- 例如我们将52转为二进制,如下所示:
- 52除以2等于为26,余数为0。
- 26除以2等于为13,余数为0。
- 13除以2等于为6,余数为1。
- 6除以2等于为3,余数为0。
- 3除以2等于为1,余数为1。
- 1除以2等于为0,余数为1。
- 余数按相反的顺序排列,整数52的二进制数值结果就是110100
负整数转换
十进制负数转换为二进制的方法为
- 将十进制转换为二进制数。
- 对该二进制数求反。
- 再将该二进制数加1. 总之就是将十进制数转换为二进制数求补码即为结果。
- 比如: -16
- 第一步:16的十进制转为二进制结果为00010000
- 第二步:求反:11101111
- 第三步:加1等于11110000 所以-16的十进制转换为二进制为11110000
小数转二进制
- 采用"乘2取整,顺序排列"法:
- 用2乘十进制小数,可以得到积,将积的整数部分取出
- 再用2乘余剩下的小数部分,又得到一个积,再将积的整数部分取出
- 重复操作,直到积中的小数部分为零,此时0或1为二进制的最后一位,或者达到所要求的精度为止
小数转换
- 例如将0.875转换为二进制:
- 0.875乘以2等于1.75,取出整数部分1。
- 0.75乘以2等于1.5,取出整数部分1。
- 0.5乘以2等于1,取出整数部分1。
- 0.875转换为二级制结果就是0.111
整数加小数转换
- 如果小数的整数部分有大于0的整数时,将整数部分和小数部分先单独转为二进制,再合在一起就可以了
- 例如:2.875
- 2的二进制是10
- 0.875的二级制是0.111
- 合在一起就是10.111
转换无限循环
- 需要的注意的10进制小数转换为二进制时会出现无限循环的情况,比如0.825转换为二进制就是0.1101001100110011001100110011001100110011001100110011无限循环的情况
二进制转换为十进制
转10进制正整数
二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方。
如果首位是0就表示正整数,如果首位是1则表示负整数,正整数可以直接换算,负整数则需要先取反再换算。
计算机内部表示数的字节单位是定长的。如8位、16位、32位。所以位数不够时,高位补零。
比如想二进制01101010转为十进制,因为以0开头,所以这是正整数,计算如下所示:
(0 * 2的零次方) + (1* 2的一次方)+ (0 * 2 的二次方)+(1 * 2的三次方) +(0 * 2的四次方) +(1* 2的五次方) + (1 * 2的六次方) + (0 * 2的7次方) = 0 + 2 + 0 + 8 + 0 + 32 + 64 + 0 = 105
转10进制负整数
二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方
比如11101011想转为负的十进制,因为最高位是1。
- 先减1等于11101010
- 取反00010101
- 然后计算出00010101对应的十进制为21
- 所以11101011最终对应的十进制为 -21。
转10进制小数
二进制转为十进制要从左到右用二进制的每个数去乘以2的相应次方。
比如0.11想转为负的十进制。
(1 * 2的负一次方) + (1* 2的负二次方) = 0.5 + 0.25 = 0.75
比如10.11想转为负的十进制。
整数部分(0 * 2的零次方) + (1* 2的一次方)= 0 + 2 = 2
小数部分(1 * 2的负一次方) + (1* 2的负二次方) = 0.5 + 0.25 = 0.75
合并为2.75, 所以二进制的10.11转为10进制为2.75