Home 世界杯图标 C程序设计——计算机中如何表示负数

C程序设计——计算机中如何表示负数

计算机中负数的表示方式,经常被提起的有三种:原码、移码、反码、补码

原码

原码,就是把二进制的最高位作为符号位(0:正号;1:负号),剩下的部分表示该数的绝对值。

我们以8位二进制举例:

如果扩展为16位二进制呢,就是下面这样:

从上面我们可以看到,原码负数从8位扩展到16位呢,需要再符号位的右边插入0,这个操作,硬件实现的时候,比较复杂。

再看一下原码的加法:

两个正数相加:直接加就行了

两个负数相加:绝对值相加,符号位不变

正数加负数:和的符号与绝对值较大的相同,和的绝对值等于较大的绝对值减去较小的绝对值。

可以看出来,原码整数的加法法则还是很复杂的。

反码

反码的正数,跟原码一样;负数,是把绝对值取反。

我们还以8位二进制举例:

如果扩展为16位二进制呢,就是下面这样: