二进制转十进制

把任意二进制数转换为十进制,本质上就是把每个值为 1 的位所对应的 2 的幂相加。该转换器接受任意位宽的数字,从一个半字节到 64 位的寄存器转储都可以,并显示按位展开,方便你检查作业、逆向分析位标志,或核对调试器打印出的数值。

二进制转十进制的计算原理

  1. 1

    输入二进制数字

    前导零没有问题。空格和下划线会被去除,所以 1010_1100 与 10101100 等效。

  2. 2

    每一位获得一个权重

    从最右侧开始,第 0 位的权重是 2^0 = 1,第 1 位是 2,第 2 位是 4,依此类推。

  3. 3

    把各位的贡献求和

    将每一位乘以它的权重再相加。0 不贡献任何值;1 贡献其所在位的权重。

  4. 4

    读取十进制结果

    总和就是你的十进制数。可以复制它,或切换到明细视图查看参与计算的每个权重。

计算示例:1011 0101

位的位置 7 6 5 4 3 2 1 0
权重 128 64 32 16 8 4 2 1
位值 1 0 1 1 0 1 0 1
贡献 128 0 32 16 0 4 0 1

总和:128 + 32 + 16 + 4 + 1 = 181

按位宽速查

  • 4 位(半字节):最大值 15
  • 8 位(字节):最大值 255
  • 16 位(short):最大值 65,535
  • 32 位(无符号 int):最大值 4,294,967,295
  • 64 位(无符号 long):最大值 18,446,744,073,709,551,615

有符号与无符号

该转换器默认把输入当作无符号数处理。对于采用二进制补码的有符号数,在固定位宽的字中,最高位为 1 表示负值:把每一位取反,加一,再对结果取负。如果需要有符号的结果,请选择与来源匹配的位宽(8、16、32 或 64 位)。

常见问题

空格和下划线会被当作视觉分隔符并忽略。其他任何内容(字母、标点、误入的 2)都会触发校验错误。

该工具使用任意精度运算,因此没有实际上限。512 位的哈希值乃至更长的数字都能干净地转换。

因为转换器默认按无符号处理。切换到 8 位有符号解释后,11111111 在二进制补码下就是 -1。

可以,每行一个数字。每行独立转换,结果一一对应,便于复制到电子表格。

相关工具