读书时,在课本上学到的十进制转二进制都是通过除2取余来计算的。最近在一个哈佛视频教材上看到了一种通过进位表的计算方式。或许以前的课本也有提及到,但由于没有哈佛视频中那种生动有趣的示例,都忘记了。
以下记录的是自己看完视频后对进位表的理解。同样的方式适用于8进制和16进制(前提是知道进位表)。
二进制的进位表:
128 | 64 | 32 | 16 |
| 8 | 4 | 2 | 1 |
通过进位表,可以轻易地在十进制和二进制之间进行转换。
E.G:
D10: 249 => D2:
说明:249<256,所以128进位上有1
249 - 128 = 121 > 64,所以64进位上有1
121 - 64 = 57 > 32,所以32进位上有1
57 - 32 = 25 > 16,所以16进位上有1
25 - 16 = 9 > 8,所以8进位上有1
9 - 8 = 1 < 4
< 2 余1 所以1进位上有1
合起来的二进制数为:1111 1001
D2:1111 1001 => D10:
说明:现在把算出来的1111 10001进行反推,算出该数的十进制数:
1进位上有1 | 1 | * 1 | 1 |
2进位上有0 | 0 | * 2 | 0 |
4进位上有0 | 0 | * 4 | 0 |
8进位上有1 | 1 | * 8 | 8 |
16进位上有1 | 1 | * 16 | 16 |
32进位上有1 | 1 | * 32 | 32 |
64进位上有1 | 1 | * 64 | 64 |
128进位上有1 | 1 | * 128 | 128 |
|
| + |
|
|
| = | 249 |
算出结果刚好等于原先十进制值。