CSAPP小记

补码的非

一个补码x的加法逆元即为补码的非。

加法逆元+x =0,通常为 补码 x 真值 的相反数的补码,记为 -x(最小数除外,为自身)。
用处:一个负数 的 补码的非为 该负数相反数的补码,且正数补码等于原码,可以快速算出真值,真值取反即为最初的负数。所以可以根据补码的非快速算出一个负数补码的真值。

方法:
CSAPP小记CSAPP小记

例子:补码0xfffffffa的真值为多少?
找到0xfffffffa最右边的1,将其左边所有位取反得到:0x00000006,该补码非真值为6,所以0xfffffffa真值为-6.