通过MCP连接 →

输入计算

数学公式

广告

结果

反码
250
111110102 (8-bit)
原数(十进制) 5
原数(二进制) 00000101
反码(二进制) 11111010
反码(十进制) 250
位宽 8

什么是反码(一补数)?

一个二进制数的反码(英文为 One's Complement,又称"一补数")是把它的每一位都取反得到的:原来是 0 的变成 1,原来是 1 的变成 0。由于结果取决于使用了多少个二进制位,所以必须先指定一个位宽,比如 4 位、8 位、16 位或 32 位。这种表示法曾用于早期计算机中表示有符号整数,时至今日,在学习二进制运算以及错误检测校验和(checksum)时仍然十分重要。

八位二进制值,每一位都被翻转以生成其反码
反码会翻转所选位宽内的每一位。

如何使用本计算器

输入一个非负的十进制数,选择一个位宽,计算器会先把这个数按所选位宽截取(掩码),然后翻转全部二进制位,并同时给出结果的二进制和十进制形式。如果你输入的数字超出了该位宽所能表示的范围,则只保留位宽以内的最低几位,再进行翻转。

公式解析

计算公式为 $$\text{Result} = \left(\sim\left(\text{Number} \,\&\, M\right)\right) \,\&\, M, \quad M = 2^{\text{Width}} - 1$$。其中 \(2^{w} - 1\) 是一个由 w 个 1 组成的掩码(例如 8 位时为 11111111 = 255)。按位取反运算(~)会翻转 n 的每一位,而掩码则会舍弃所选位宽以上的所有高位,从而保证结果落在有效范围之内。

4、8、16 和 32 个单元的四条位宽条带,按长度递增显示
位宽决定翻转多少位。

示例演算

以 8 位下的数字 5 为例。在二进制中,\(5 = 00000101\)。把每一位翻转后得到 \(11111010\),对应十进制的 250。因此,5 在 8 位下的反码为 250。而在 4 位下,\(5 = 0101\),翻转后为 \(1010 = 10\)。

常见问题

反码与补码(二补数)有什么区别?补码(Two's Complement)是在反码的基础上再加 1,这样可以避免出现"正零"和"负零"两种零的表示。

0 的反码是多少?在 8 位下为 11111111 = 255 —— 所有位都变成了 1。

为什么结果会随位宽而变化?翻转操作取决于一共有多少个二进制位;位宽越大,前面补的 1 就越多,得到的十进制值也就越大。

最后更新: