目录
二,计算机中通过补码计算 和 通过补码向内存中存储提取数据。
3.补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路;
一,原码 反码 补码 分别是什么,如何相互转换。
1,原码
原码就是我们所看到的十进制数,直接转换成二进制数,得到的就是原码。
2,反码
若该数值为正数 或 无符号类型:
则原码就是反码。
若该数值为负数:
反码通过原码除符号位以外的其它位按位取反得到反码。
3,补码
若该数值为正数 或 无符号类型:
则反码就是补码。
若该数值为负数:
补码通过反码+1得到。
拓展:
1,二进制B 如何转换成 十进制D
二进制的位权 | 2^3 | 2^2 | 2^1 | 2^0 |
10的二进制B | 1 | 0 | 1 | 0 |
每位所代表 的十进制数 |
1*2^3 | 0*2^2 | 1*2^1 | 0*2^0 |
综上所述:
1010B == 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 == 8 + 0 + 2 + 0 ==10
4,示例展示 :原码 反码 补码 的转换过程
按字节编址的内存空间,signed int a = -10 ; 来具体展示
类型 signed int | 高位字节数据 | 低位字节数据 | ||
原码 -10 | 1 000 0000 | 0000 0000 | 0000 0000 | 0000 1010 |
反码 -10 (取反) | 1 111 1111 | 1111 1111 | 1111 1111 | 1111 0101 |
补码 -10 (+1) | 1 111 1111 | 1111 1111 | 1111 1111 | 1111 0110 |
通过上面的展示可以更好的理解,原码是怎么一步一步的转变到补码的。