补码原理

补码“取反再加一”的定义,听着就很没有来头。其实用同余就能解释。感觉这玩意被搞成玄学了。。

对于一个int类型的数,除去符号位,补码的后面31位都和原数\(\bmod {2^{31}}\)同余,而考虑上符号位,和原数\(\bmod {2^{32}}\)同余。

只需要管负数,负数加上\(2^{31}\),相当于让后面31位“取反再加1”,再算上符号位的话,相当于又加上一个\(2^{31}\),也就是\(2^{32}\)

然后就没了。

原文地址:https://www.cnblogs.com/happyguy/p/12944719.html