什么是二进制转十进制转换器?
二进制转十进制转换器可以把以二进制(Base 2,只使用 0 和 1 两个数字)表示的数,换算成我们日常使用的十进制(Base 10)数值。计算机内部存储和处理的一切都以二进制形式进行,因此当你需要把原始比特、内存数据、子网掩码或程序输出转换成人眼可读的数值时,转换为十进制就显得尤为重要。
如何使用
在输入框中填入你的二进制数——例如 101101——转换器就会返回对应的十进制数值以及比特位数。凡是非 0、非 1 的字符都会被自动忽略,因此你可以放心地粘贴带空格分组的写法,比如 1011 0101。
公式详解
每一个二进制位(bit)都对应一个位权,等于 2 的某次幂,幂次从最右侧第 0 位开始往左依次递增。十进制数值就是各个比特位乘以其位权后的总和:
$$\text{Decimal} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,n-1-i}, \quad d_i \in \text{Binary Number}$$
最右侧一位的位权为 \(2^0 = 1\),向左依次为 \(2^1 = 2\)、\(2^2 = 4\)、\(2^3 = 8\),以此类推。
实例演算
换算 101101。从右往左,对应的位权依次为 1、2、4、8、16、32:
$$(1\cdot32) + (0\cdot16) + (1\cdot8) + (1\cdot4) + (0\cdot2) + (1\cdot1) = 32 + 8 + 4 + 1 = 45$$。因此二进制 101101 等于十进制 45。
二的幂次位置权重
在二进制数中,每一位的位置权重等于2的幂次。最右边的位(位置0)的权重为\(2^0 = 1\),向左的每一位权重都加倍。手工转换时,将每一位乘以其权重,然后相加:
$$\text{十进制} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,i}$$
其中\(i\)从右边(最低有效位)开始计数,从0开始。
| 位位置 \(i\) | 幂次 \(2^i\) | 十进制权重 |
|---|---|---|
| 0 | \(2^0\) | 1 |
| 1 | \(2^1\) | 2 |
| 2 | \(2^2\) | 4 |
| 3 | \(2^3\) | 8 |
| 4 | \(2^4\) | 16 |
| 5 | \(2^5\) | 32 |
| 6 | \(2^6\) | 64 |
| 7 | \(2^7\) | 128 |
| 8 | \(2^8\) | 256 |
| 9 | \(2^9\) | 512 |
| 10 | \(2^{10}\) | 1,024 |
| 11 | \(2^{11}\) | 2,048 |
| 12 | \(2^{12}\) | 4,096 |
| 13 | \(2^{13}\) | 8,192 |
| 14 | \(2^{14}\) | 16,384 |
| 15 | \(2^{15}\) | 32,768 |
| 16 | \(2^{16}\) | 65,536 |
对于8位字节,最大值为\(2^8 - 1 = 255\)(所有8位均设为1),对于16位,最大值为\(2^{16} - 1 = 65{,}535\)。
更多工作示例
每个示例将每一位与上表中的位置权重对齐,只保留位值为1的权重,然后相加得到十进制值。
示例1:11111111(8位全为1)
每一位都是1,所以我们将位置7到位置0的所有8个权重相加:
$$128 + 64 + 32 + 16 + 8 + 4 + 2 + 1$$
总和为255,这是8位字节可以容纳的最大值。
示例2:10000000
只有最左边的位(位置7)为1,其他所有位置贡献0:
$$1\cdot128 + 0\cdot64 + 0\cdot32 + 0\cdot16 + 0\cdot8 + 0\cdot4 + 0\cdot2 + 0\cdot1$$
这简化为单个权重\(2^7\),得到128。
示例3:110010101(9位)
将比特与其位置权重相对应,1位在位置8、7、4、2和0处:
| 位 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|
| 位置 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 权重 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
仅相加位值为1的权重:
$$256 + 128 + 16 + 4 + 1$$
十进制结果为405。您可以使用十进制转二进制转换器确认反向转换,输入405并检查它是否返回110010101。
常见问题
8 位二进制数最大是多少? 是 11111111,对应十进制的 255(即 \(2^8 - 1\))。
可以输入前导零吗? 可以。前导零不会改变数值——0010 和 10 是一样的,都等于十进制的 2。
支持二进制小数吗? 不支持,本工具只换算二进制整数,小数点后的小数部分无法处理。