C语言中数值以补码形式存储
例如 -17:
原码:1001 0001
反码:1110 1110(最高的符号位不变)
补码:1110 1111(反码+1)
8位2进制有符号int的范围为-128~127
-128的原码:1000 0000(-0)
反码:1111 1111
补码:1000 0000(非符号位,溢出时丢弃溢出的进位)
原码、反码、补码转换原理:为什么补码取反加1? - 知乎 (zhihu.com)
C语言中数值以补码形式存储
例如 -17:
原码:1001 0001
反码:1110 1110(最高的符号位不变)
补码:1110 1111(反码+1)
8位2进制有符号int的范围为-128~127
-128的原码:1000 0000(-0)
反码:1111 1111
补码:1000 0000(非符号位,溢出时丢弃溢出的进位)
原码、反码、补码转换原理:为什么补码取反加1? - 知乎 (zhihu.com)