背景
大家都知道计算机内部采用补码表示整数的,但是具体到补码的内在含义,很多人不能理解,故我们分享自己的理解。
首先说下补码的定义以及基本性质:
1) 正数的补码和原码相同;
2) 负数的补码等于取反后加1;
3) 0
的正负两种补码相同;
4) 对一个补码再求补码等于自己;
5) 一个正数的原码和其对应的负数的补码相加等于模;
针对本文,我们其实只关心规则1)和2)即可。
实例
为方便说明现有的补码定义(即正数的补码等于原码;负数的补码等于取反加1),本文均以八进制为例。
5 – 3 //记作式A,方便后文引用
= 5 + ( -3 )
(下面开始转为二进制补码格式)
= 0101 + ( 1111 – 0011 + 1 ) //展开-3的补码形式
= ( 0101 – 0011