计算机数据存储的一些总结
- 补码的本质
- 补码的本质是利用溢出来使加法与减法有相同结果。假设用8位来表示一个有符号数,那么溢出值为28 = 256。假如我们要计算x-127的值,那么,有:
- 128 – 256 = -127
- x + 128 – 256 = x + (-127)
- 由于我们限定了8位表示一个数,所以计算机计算时会丢弃溢出位,也就是计算机帮我们做了上面的减256这一步,所以x + 128 = x – 127。同时,可以知道,-127的补码是128。
- 补码的本质是利用溢出来使加法与减法有相同结果。假设用8位来表示一个有符号数,那么溢出值为28 = 256。假如我们要计算x-127的值,那么,有:
- 为什么用补码
- 方便CPU用加法器算减法
- 运行时溢出(非加减法溢出)后的具体行为是什么决定
- 具体行为由编译器决定,CPU只负责计算,unsigned整型溢出C语言规定把溢出位丢弃,signed整型溢出则看编译器行为。