一个十进制数:ABC.DEF = A*10^2 + B*10^1 + C*10^0 + D*10^-1 + E*10^-2 + F*10^-3
一个二进制数:abc.def = a*2^2 + b*2^1 + c*2^0 + d*2^-1 + e*2^-2 + f*2^-3
这是不同进制的数值表示的根本
在计算机里整数和小数的表示方法是不同的
小数是用浮点数表示的 先表示有效数字 ,然后标记小数点位置 所以称为浮点数 file:///var/folders/yd/kr4kpn494919y38fd91y2gk80000gn/T/WizNote/1fe2d181-3de7-403e-a248-1a54eded9c4a/index_files/2991646.png
file:///var/folders/yd/kr4kpn494919y38fd91y2gk80000gn/T/WizNote/1fe2d181-3de7-403e-a248-1a54eded9c4a/index_files/6790028.png
深度剖析:(仔细认真想想,就可以明白) 以 十进制数 25.625 为例
整数部分: 25 = 1*2^4+1*2^3+0*2^2+0*2^1+1*2^0 ---------->11001 每次除2,相当于是上式中每一项的幂减一,余数则是每一次除2前的多项式中0次幂项的因子
详解 25第一次除 2: ( 1*2^4+1*2^3+0*2^2+0*2^1+1*2^0 )/2=( 1*2^3+1*2^2+0*2^1+0*2^0 ) 余数为:1*2^0 中的 1 以此类推,小数的每次乘 2 也同理
小数部分: 0.625 = 1*2^-1 + 0*2^-2 + 1*2^-3 每次乘2,相当于是上式中每一项的幂加一,得到的整数则是每一次乘2后的多项式中0次幂项的因子
至于反向转换,整数部分从右向左,小数部分从左向右,所有位的位权相加(在此方向无所谓) 整数部分与小数部分中2的次幂项相当于一个整数的数轴,由0向两侧延伸 比如对于一个二进制数:11001.101 只需要计算1*2^4 + 1*2^3 + 0 + 0 + 1*2^0 + 1*2^-1 + 0 + 1*2^-3 = 25.625即可
人们熟悉十进制的计算,所以手工转换时人们考虑的是每一个二进制位代表的是十进制的多少,然后十进制相加;而不会考虑每一个十进制位代表的是二进制的多少,然后二进制相加。
|