补数是一种处理有符号数的方法,用于变换数字的符号。常在计算机科学中应用,被称为“补码”。在台湾和香港“一的补数/一补数(one's complement)”表示大陆的“反码”,“二的补数/二补数(two's complement)”才表示大陆的“补码”。

中文名

补数

别名

补码

功能

变换数字的符号

应用

计算机科学中

概念

在日常生活中,常常会遇到补数的概念,例如时钟指示为六点,想要它指向三点,可以按顺时针方向将分针转九格,也可以逆时针方向转三格,结果是一致的。由于时针转一圈为12小时,而其中12在时钟里是不被显示而自动丢失的,即

,15点和三点在时钟表示上是一致的。想想一下,在时钟这个问题上,任何时候时针向顺时针转九格和逆时针转三格的效果都是一致的,我们将方向定位正负,即-3与+9等价。而数学上称12为模写作(mod12),而称+9是-3以12为模的补数记为:

【以上截取自《计算机组成原理·第二版》唐朔飞著p221】

可以将模理解为一个足够大的正数,足够大到比你运算所有数字的绝对值都要大。

结论

一个负数可用它的正补数来代替,而这个正补数可以用模加上负数本身来得到。

一个正数和一个负数互为补数时,两数的绝对值之和为模。

正数的补数为其自身。

应用

计算机科学中,补数的最大应用点为,在处理加法和减法中,不会因为数字的正负使用不同的计算方式。只要一种加法电路就可以处理各种有符号数加法,而且减法可以用一个数加上另一个数的补数来表示,因此只要有加法电路及补数电路即可完成各种有符号数的加法及减法,电路设计上相当方便。

关于补码

补数在计算机中被称为补码(在港台被称为二补数)

有符号的二进制数的补码运算方法为:

正数:补码为其本身

负数:除符号位外,所有位取反(即原码的反码),然后+1(简称为求反加一)

如:-1101的补码为

1.-1101的原码为11101(第一位为符号位)

-1101的反码为10010(第一位为符号位)

-1101的补码为10011(第一位为符号位)

整数的补码定义

和[