[GESP202512 C++ 三级] 判断题第 9 题
【题目描述】
给定一个正整数 a ,当需要计算 -a 的补码时,有这样一个计算技巧:将 a 的二进制形式从右往左扫描,遇到第一个 1 之后,将找到的第一个 1 左边的所有位都取反,能得到 -a 的补码。
答:依据原码、反码、补码的定义可知,65 及 -65 的原码、反码、补码,如下表所示。
| 原码 | 反码 | 补码 | |
| 65 | 0011 0101 | 0011 0101 | 0011 0101 |
| -65 | 1011 0101 | 1100 1010 | 1100 1011 |
据此表,进行验证题设陈述:已知 65 的二进制为 00110101,从右往左扫描,将找到的第一个 1 左边的所有位都取反,得 11001011。其恰为 -65 的补码。据此,可知题设结论是正确的。
------------------------------- 原码、反码、补码的定义 -------------------------------
正数的反码等于其原码。
正数的补码等于其原码。
负数的反码等于对负数原码符号位以外的各位取反(0变1,1变0)。
负数的补码等于负数的反码加1。
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/119720322
https://blog.csdn.net/hnjzsyjyj/article/details/119722653
