『教程』补码怎么来的?
1.首先需要知道负数的二进制怎么来的
将减去一个数变为加上这个数的负数
通过结果反推这个负数的二进制是多少
多组数据对比,得出:
- 先把十进制的负数取绝对值,
- 转为二进制 然后按位取反,
- 最后加 1 。
这就是十进制负数的二进制写法了,这就叫做补码。
对于正数和0,源码和补码是一样的
2. 为什么数据溢出会变成负数?
计算机中一个8位最多存储256个数字
不足的前面位数由0补全
- 这个8位由两部分组成,第一个数是最高位(0为正,1为负)和其余部分组成(实际数据)
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | = | 11 |
|---|---|---|---|---|---|---|---|---|---|
| 最高位 | 补码 | 补码 | 补码 | 8 | 4 | 2 | 1 | = | 8+0+2+1=11 |
下面是8位数最高值127:

- 最高值127+1,就会让最高位的正负数标记进一位变为1,也就成了负,变为1000 0000 1000 0000
- 既然是负数,那就通过补码的由来进行反推就能得出他的的十进制的数字
- 先减1,得到 0111 1111
- 按位取反,得到 1000 0000
- 他的十进制的绝对值就是 128 取负数,得到 -128
结束
本文详细介绍了如何从十进制转换为二进制补码形式,包括负数的特殊处理方法。同时探讨了在计算机中数据溢出时数值如何从正数变为负数的原理。
1397

被折叠的 条评论
为什么被折叠?



