要把十进制数转换成二进制,就不断除以 2,记录每一步的余数,再从下往上读取这些余数。对于非负整数,这是标准的手算方法;之所以可行,是因为二进制使用的是 2 的幂,而不是 10 的幂。
如果你在搜索十进制转二进制转换器,这就是你需要掌握的核心思路。每一位二进制数字都表示某个 2 的幂是否被包含:1 表示包含,0 表示不包含。
例如,二进制数 1011012 表示
1⋅25+0⋅24+1⋅23+1⋅22+0⋅21+1⋅20
它等于
32+0+8+4+0+1=45
所以,十进制转二进制本质上就是把一个数改写成若干个 2 的幂之和。
为什么十进制转二进制可行
在十进制中,各位依次是 1、10、100、1000,依此类推。在二进制中,各位是
1, 2, 4, 8, 16, 32, 64,…
因为二进制只有两个数字,所以每一位只能是 0 或 1。1 表示这个 2 的幂被包含,0 表示不包含。
这也是为什么二进制天然适合数字系统:每一位只有两种状态。
如何把 45 从十进制转换成二进制
对于非负整数,标准方法是反复除以 2。
从 45 开始:
45÷2=22 余 1
22÷2=11 余 0
11÷2=5 余 1
5÷2=2 余 1
2÷2=1 余 0
1÷2=0 余 1
现在从下往上读取余数:
101101
所以
4510=1011012
你也可以用位值来验算:
1011012=1⋅32+0⋅16+1⋅8+1⋅4+0⋅2+1⋅1=45
快速检查的方法是列出所有标记为 1 的 2 的幂:32、8、4 和 1。它们的和是 45,所以这个转换是正确的。
为什么要倒着读余数
每一步除法得到的都是下一个最低有效位,也就是最右边的二进制位。所以第一个余数应该放在最后,而不是最前面。
你也可以通过把 45 表示成若干个 2 的幂之和来看出同样的结果。能放进去的最大 2 的幂是 32,还剩下 13。然后 8 可以放进去,还剩下 5。接着 4 可以放进去,还剩下 1。最后,1 也可以放进去。
于是得到
45=32+8+4+1
所以,25、23、22 和 20 对应的位是 1,其余位是 0。这样又得到 101101。
常见错误
从上往下读取余数
使用反复除法时,余数要从下往上读。如果从上往下读,就会得到错误的二进制数。
把整数方法用于小数
上面的除以 2 方法适用于非负整数。如果原来的十进制数有小数部分,那么这个小数部分需要单独使用另一种转换过程。
认为十进制小数在二进制中一定有限结束
并不是这样。例如,有些有限十进制小数在二进制中会变成循环展开。所以如果输入的不是整数,十进制转二进制转换器可能会显示近似结果。
什么时候会用到十进制转二进制
这种转换常见于计算机、数字电子、存储容量以及基于位的逻辑中。即使你在工作中从不手动转换数字,理解这些位代表什么,也能让二进制数不再那么难懂。
在读取掩码、标志位或底层示例时,它也很有用,因为其中每一位通常都表示一个开/关选择。
快速练习
试着用同样的除以 2 过程把 26 转成二进制。然后把结果展开成 2 的幂来验算。如果你想再进一步,可以把这个整数例子和一个十进制小数进行比较,看看为什么小数部分需要额外处理。