因为人类有十根手指,所以十进制计数法,是目前使用范围最广泛的计数方式。
但在计算机中,只有 0 和 1 两个数,所以需要进行转换。
本文主要介绍一下十进制 整数 与二进制数的转换方法。
十进制转二进制
方法一
十进制整数转二进制时,可将十进制整数除以 2
(因为需转换为二进制数),得到余数,填入二进制低位,直至商为 0
时结束。
以 156
为例:
除数 | 被除数 | 余数 |
---|---|---|
2 | 156 | 0 |
78 |
将余数 0
填入二进制数的低位
- | - | - | - | - | - | - | 0 |
商不为 0
,继续计算:
除数 | 被除数 | 余数 |
---|---|---|
2 | 156 | 0 |
2 | 78 | 0 |
39 |
将余数 0
填入二进制数的低位
- | - | - | - | - | - | 0 | 0 |
继续运算至商为 0
时终止:
除数 | 被除数 | 余数 |
---|---|---|
2 | 156 | 0 |
2 | 78 | 0 |
2 | 39 | 1 |
2 | 19 | 1 |
2 | 9 | 1 |
2 | 4 | 0 |
2 | 2 | 0 |
2 | 1 | 1 |
0 |
得到二进制表示为:
1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
方法二
用十进制整数减 2
的指数(因为是要转换为二进制),直至减为 0 结束。
仍然以 156
为例,先将 2 的指数列出来:
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2^9 | 2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
156 减 2 的 7 次方(128)得 28,故在二进制数的第八位(从右往左数,第一位对应 2^0
,第二位对应 2^1
),填入 1
(因为只能减掉一个 2^7)。
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2^9 | 2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
- | - | 1 | - | - | - | - | - | - | - |
156 - 128 = 28
,28 只能减掉一个 16(2^4),故在第五位填入 1,中间第六第七位补 0 。
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2^9 | 2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
- | - | 1 | 0 | 0 | 1 | - | - | - | - |
28 - 16 = 12
,12 = 2^3 + 2^2
,故在第四位及第三位填 1,其余低位补 0 。
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2^9 | 2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
- | - | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
二进制转十进制
二进制转十进制时,只需取出每位乘以对应的 2 的指数,并求和。
如 10011100
转十进制时的计算方式为:
1 * 2^7 + 0 * 2^6 + 0 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 = 128 + 0 + 0 + 16 + 8 + 4 + 0 + 0 = 156
其他进制
除了十进制和二进制之外,还有八进制、十六进制、二十进制等计数方法,均可通过上述方式进行转换。