取反题目
题目:数据常用位十进制数据举例 我们计算a = 60的取反运算c=~a
求c
引用的知识点
知识点:
正数的反码 补码 都一样。
0的补码反码都一样
负数的反码,最高是标记符号位,其他位置1变0 1变0
负数的补码 反码+1
步骤
斜体样式本篇我们全用8位二进制来解析
- 换算二进制
60变二进制:0011 1100的由来
2的位方 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|---|
60拆二进制 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
- 二进制换算补码
原因:计算机存储一个数值时, 是将数的补码存储在磁盘上。
正数的补码 反码即其本身所以60的补码还是:0011 1100
3.取反运算(的到目标数据的补码)
补码的1变0 0变1
得到了我们目标取反运算。 这个二进制即我们目标数据补码。
所以我们得到:1100 0011(目标数据存在磁盘得样子,也就是它的补码)
4.目标数据补码推算 反码
我们通过这个目标数据的补码-1 的到它的反码
得到:1100 0010
5.目标数据反码推算 原码
此时这个数已经是一个负数了 保持它的符号位不变,其他0变1 1变0.
1011 1101
6.带符号的原码换算十进制
2的位方 | 符 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|---|
负数原码 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
-1*(32+16+8+4+1)=-61
则:60的取反运算时 -61
举一反三
我们反推-61的取反运算
1.转二进制
1011 1101
2.算反码(符号不动 其他1 0 互换)
1100 0010
3.算补码 反码+1
1100 0011 (-61躺在磁盘的姿势就这样)
4.取反运算
0011 1100 (得到我们目标数据躺在磁盘的姿势了,也就是它的补码)
5.补码算反码 原码(正数的补码 反码原码一样)
0011 1100
6.二进制换算十进制:
2的位方 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
盘它:
32+16+8+4 = 60
所以,-61的取反运算是60