无需登录 数据私有 本地保存

二进制补码转换 - 负数表示方法在线

21
0
0
0

二进制补码转换器

在线转换十进制整数与二进制补码(Two's Complement)—— 计算机负数表示标准方法

自定义: 位(2-32)
范围:-128 ~ 127
支持输入纯二进制串(可含空格),最高位为符号位(0正1负)
自动检测位宽
转换结果
原码 (Sign-Magnitude)
反码 (Ones' Complement)
补码 (Two's Complement)
十六进制:
位可视化 (红底=符号位,蓝底=1,灰底=0)
请输入数值
转换步骤
请输入数值以查看详细转换步骤
常见问题与知识点
什么是补码(Two's Complement)?

补码是计算机中表示有符号整数的最常用编码方式。在补码系统中,正数的补码与原码相同负数的补码是其反码加1。N位补码可以表示的范围是 -2N-1 到 2N-1-1。例如8位补码范围是-128到127。

为什么计算机使用补码而不是原码?

使用补码有三大优势:① 0只有一种表示(原码和反码都有+0和-0);② 减法可以转化为加法(A-B = A+(-B的补码)),简化硬件电路;③ 符号位可直接参与运算,不需要额外处理。这些特性使得补码成为现代计算机的标配。

补码与反码、原码有什么区别?

原码:最高位为符号位(0正1负),其余位表示绝对值。如-8的8位原码为10001000
反码:正数反码=原码;负数反码=符号位保持1,其余位取反。如-8的反码为11110111
补码:正数补码=原码;负数补码=反码+1。如-8的补码为11111000

8位补码中-128为什么没有对应的原码?

8位补码的范围是-128到127,其中-128的补码是10000000。但在8位原码中,符号位占1位后只剩7位表示数值(最大127),无法表示绝对值128。这是补码的一个特殊性质——补码比原码多表示一个负数(最小值)。类似地,16位补码的-32768也没有对应的原码。

如何从补码反推十进制值?

方法一:若符号位为0,直接按二进制解析为正数;若符号位为1,则先减1再取反(除符号位),得到绝对值后加负号。方法二:若符号位为1,值 = 解析出的无符号整数 - 2N。例如8位11111000=248,248-256=-8。

补码溢出是怎么回事?

当运算结果超出指定位宽能表示的范围时,就会发生溢出。例如8位补码中,127+1=128超出最大值127,结果会"绕回"到-128(即01111111+1=10000000=-128)。这称为有符号整数溢出,在编程中需要特别注意。

常见的位宽有哪些?

计算机中常见的整数位宽:8位(byte/int8_t,范围-128~127)、16位(short/int16_t,范围-32768~32767)、32位(int/int32_t,范围约±21亿)、64位(long/int64_t,范围约±9.2×10¹⁸)。Java中int固定32位,C/C++中int通常32位(取决于平台)。