在计算机中,数值按字节、按补码的形式存储按位运算的。

数值用二进制原码表示时,最高位为符号位,正数为0、负数为1,位数不够用0补全。

如:9 和 -9 的原码分别为 0000 1001 和 1000 1001 。

用原码存储数值时,关于 0 和 -0 存在两种表示,分别为: 0000 0000 和 1000 0000 。

同一个数值,存在两种表示方法当然有问题,用补码便可解决。

关于补码,正数的补码同原码,负数的补码将原码的符号位不变、其余位取反、再加1。数值补码进行运算时,符号位参与运算

如:9 和 -9 的补码分别为: 0000 1001 和 1111 0111 。而0 和 -0 的补码均为: 0000 0000 。

补码运算可化减法为加法,方便运算。如: 9 - 9 = 9 + (-9),即(0000 1001) + (1111 0111) = 0000 0000 。

补码变回原码,依然是正数的原码同补码,负数的补码转原码需符号位不变、其余位取反、再加1,符号位参与运算。