赵岩 《C语言点滴》笔记
定义
原码
原码是一种计算机中对数字的二进制表示方法,数码序列中最高位为符号位,符号位为0 表示正数,符号位为1表示负数;其余有效值部分用二进制的绝对值表示。
反码
如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。
补码
如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在末位加1。
图解
假定用4位二进制数表示一个整数
原码
用原码表示有符号数据有两个问题:
* 正负相加不等于0
* 有两个0存在
反码
解决了
* 正负相加为0
但是依然有两个0
补码
正负相加,如果丢弃最高位的进位,结果满足正负相加等于0
同时解决了
* 正负相加为0
* 只有1个0
因此,补码是终极的解决方案。
得出的结论:整形数在计算机中,使用补码表示。