我们常见的是纯整数十进制转二进制,而对小数部分的转换不常提及。以下帮助大家梳理
(
x
x
x
.
y
y
y
)
10
x
x
x
为
整
数
部
分
,
y
y
y
为
小
数
部
分
(xxx.yyy)_{10}\\ xxx为整数部分,yyy为小数部分
(xxx.yyy)10xxx为整数部分,yyy为小数部分
核心思想:将整数和小数部分分开计算,最后整合。
- 对于整数:除二逆向取余
- 对于小数部分:乘二正向(向下)取整
(一)整数部分
以34举例
图中每个小箭头代表一次除2
34=17x2+0
17=8x2+1
…以此类推
最后逆向读出。故
(
34
)
10
(34)_{10}
(34)10=
(
100010
)
2
(100010)_2
(100010)2
(二)小数部分
以0.625举例
图中每个小箭头代表两个操作:
A
→
\rightarrow
→B
- Ax2
- B= A- ⌊ A ⌋ \lfloor A \rfloor ⌊A⌋
0.25=0.625*2=1.25- ⌊ 1.25 ⌋ \lfloor 1.25 \rfloor ⌊1.25⌋ =0.25 ( ⌊ 1.25 ⌋ \lfloor 1.25 \rfloor ⌊1.25⌋=1)
0.5=0.25*2=0.5- ⌊ 0.5 ⌋ \lfloor {0.5} \rfloor ⌊0.5⌋=0.5( ⌊ 0.5 ⌋ \lfloor {0.5} \rfloor ⌊0.5⌋=0)
最后正向读出。故 ( 0.625 ) 10 = ( . 101 ) 2 (0.625)_{10}=(.101)_2 (0.625)10=(.101)2
若嫌式子过于复杂,可以这么记忆:
小数部分乘2,若>1,则减去1,在旁边记录下1;
若小于1,则无需减去1,在旁边记录下0;
使其一直为0.xx的形式,如此往复
特别的:小数部分转二进制可能会出现乘不尽,一直不能化为0。此时根据题目要求的精度来决定要多少位二进制即可。
整合
那么34.625的二进制表述就是将其拼接起来
(
34.625
)
10
=
(
100010.101
)
2
(34.625)_{10}=(100010.101)2
(34.625)10=(100010.101)2