原码反码补码
有符号整数的原码、反码、补码在线互算
十进制整数(可为负)
结果
这个工具能做什么
原码反码补码转换工具帮你把一个有符号十进制整数,在指定位宽下转成计算机内部的三种二进制编码形式。原码直观地用最高位表示正负、其余位表示数值绝对值;反码是负数时把原码的数值位逐位取反;补码则是反码再加一。工具会同时给出三种码的二进制、补码的十六进制与无符号十进制值。
为什么要有这三种码?根本原因是让减法能用加法电路实现。原码做加减法时符号位要单独处理、还存在正零和负零两个零,很不方便;补码巧妙地把减一个数变成加它的补码,且零只有一种表示,因此现代 CPU 内部一律用补码存储有符号整数。理解原码到反码再到补码的推导过程,是计算机组成原理和二进制运算的基础。
举个例子,8 位下的 -5:绝对值 5 是 0000101,补上符号位得到原码 1000 0101;数值位取反得到反码 1111 1010;再加一得到补码 1111 1011,也就是十六进制 0xFB。如果把这个补码当作无符号数看就是 251。正数的原码、反码、补码三者完全相同,只有负数才会出现区别。
使用时注意位宽的取值范围:n 位有符号数能表示的区间是 -2^(n-1) 到 2^(n-1)-1,超出会提示越界。常见的 8/16/32 位分别对应 char、short、int 等类型,理解补码的溢出与符号扩展,对写底层代码、看反汇编、做嵌入式开发都很有帮助。
原码反码补码是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“原码”、“反码”、“补码”,说的都是这个。
常见使用场景
- 学计算机组成原理时验算原码反码补码
- 看反汇编或嵌入式代码时理解负数的二进制存储
- 备考时快速核对补码换算答案
- 调试位运算发现负数结果异常时排查
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。
常见问题
原码、反码、补码有什么区别?
正数时三者相同。负数时:原码是符号位1加数值绝对值;反码是在原码基础上把数值位逐位取反;补码是反码再加1。计算机实际用补码存储负数。
为什么计算机用补码而不用原码?
因为补码能把减法统一成加法,简化了硬件电路,而且零只有一种表示(原码有正零和负零两个)。这让运算更高效、更不易出错。
8 位有符号数能表示多大范围?
8 位有符号数范围是 -128 到 127,即 -2^7 到 2^7-1。超出这个范围工具会提示越界,请改用 16 位或 32 位。
补码怎么换算回十进制?
若最高位为0是正数,直接按二进制读;若最高位为1是负数,可以把补码取反加一得到绝对值再加负号,或用「无符号值减去 2^n」。工具已直接给出结果。
这个工具支持负数和大数吗?
支持负数,只要在所选位宽的表示范围内即可。32 位可表示到约 ±21 亿,超出请注意 JavaScript 精度,本工具已针对常见位宽做了范围校验。