1 .在十进制整数二进制中,假设十进制整数值为a,相应的二进制数字为abcde (如果各位的值不是0则为1 )。
众所周知,将二进制转换为十进制的表达式如下:
A = a * 24 + b * 23 + c * 22 + d * 21 + e * 20
因此,只需将a、b、c、d、e全部取出即可得到二进制值。
又见a=2*(a*23b*22c*21d*20 ) e
因此,a除以2将得到整数位(a * 23 b * 22 c * 21 d * 20 )和余数e
将上面得到的整数(a * 23 b * 22 c * 21 d * 20 )除以2得到整数位(a * 22 b * 21 c * 20 )和余数d。
这样,c,b,a
2 .在十进制小数二进制中,假设十进制的小数值为a(a1 ),相应的二进制为0.abcde(2 (二进制的各位的值如果不是0则为1 )。
众所周知,将二进制转换为十进制的表达式如下:
A=a * 2-1 b * 2-2 c * 2-3 d * 2-4 e * 2-5
从二进制小数的上位到下位的各位的权重分别为12(FRAC(1) {2}211 )4) FRAC ) {1}{4}41 )8) 81 ) 16 ) FRAC ) {1} 161 ) 32 )
A * 2的结果只有两种可能。 1.****或0.****。 这个值的整数位数字是a的值。
a *2=a12frac {1} {2} 21 b14frac {4} 41c 18frac {1} {2} 81d 116 frac {3} {4} 16 }
因此,如果a为1,则A * 2的结果为1.****
a为0时,A * 2的结果为0。 ***
步骤2 :
a*2-a=(12 ) FRAC{1}{2}21b1 )4) FRAC{1}{4}41c1 ) FRAC{1}{8}81d1 ) 16 ) frac { 16 } 161 e )的
因此,(A * 2 - a ) ) 2的结果也只有两种可能:1.****或0.****。 这个值的整数位数字是b的值。
原理与步骤1相同
(A * 2 - a )2=B12(FRAC(1) {2}21C1 )4) FRAC )1) {4}41D18 ) FRAC )1}{8}81e
第三步:
重复以上操作,可以得到后面的c、d、e的值
注:部分十进制小数对应的二进制数是无限位小数,计算机处理对此类数取近似值。
从十进制0.1到二进制的转换是无限循环小数
0.00011001100110011001100110011001100110011
即使将十进制0.2转换为二进制也是无限循环小数
0.00110011001100110011001100110011001100110011,所以0.1 0.2的值是0.30000000000004