计算机中负数的表示方式,经常被提起的有三种:原码、移码、反码、补码
原码
原码,就是把二进制的最高位作为符号位(0:正号;1:负号),剩下的部分表示该数的绝对值。
我们以8位二进制举例:
如果扩展为16位二进制呢,就是下面这样:
从上面我们可以看到,原码负数从8位扩展到16位呢,需要再符号位的右边插入0,这个操作,硬件实现的时候,比较复杂。
再看一下原码的加法:
两个正数相加:直接加就行了
两个负数相加:绝对值相加,符号位不变
正数加负数:和的符号与绝对值较大的相同,和的绝对值等于较大的绝对值减去较小的绝对值。
可以看出来,原码整数的加法法则还是很复杂的。
反码
反码的正数,跟原码一样;负数,是把绝对值取反。
我们还以8位二进制举例: