GESP C++等级认证三级15-原码反码补码2-2

3 补码

3.1 加法计算

使用补码即能解决正整数与负整数相加问题,又能提高计算效率。正整数的补码与其原码相同,负整数的补码在其原码的基础上加1,如图6所示。

图6 使用补码实现正整数与负整数相加

其中,得到的结果如果超过8位,则舍弃超过8位的数值。因此,通过补码计算5+(-3)的结果是00000010,即2。

相关链接2 求负数补码的方法,除了上文介绍的反码加1外,还可以在其原码中从右向左找到第一个1,之后,将个1左边的所有数值位取反,符号位不变。

3.2 取值范围

对于8位二进制补码,0-127分别用"0000 0000"-"0111 1111"表示,-127到-1分别用"1000 0001"-"1111 1111"表示。多出来的一个补码"1000 0000"用来表示-128,因此8位二进制补码的取值范围是-128-127,并且还解决了原码与反码中存在+0和-0的问题。

4 真题解析

4.1 2025年6月

在"1.3 取值范围"中提到,8位二进制原码的取值范围是-127-127,因此本题选A。

4.2 2025年6月

在"2.3 取值范围"中提到,反码存在+0和-0两种表示方式,因此本题选B。

4.3 2025年6月

在"3.1 加法计算"中提到,负数补码的计算方式是反码加1,因此已知反码求补码的方法就是补码减1,所以本题中的反码是1011 1010,而在"2.1 表示方式"中提到,负数的反码是除符号位外的所有数值位取反,因此已知反码求原码的方式也是除符号位外的所有数值位取反,即可得到原码。因此补码1011 1010对应的原码是1100 0101,也就是-69,本题答案选A。

相关推荐
-dzk-3 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
韩立学长3 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
froginwe114 小时前
Scala 循环
开发语言
m0_706653234 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你914 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Bruk.Liu4 小时前
(LangChain实战2):LangChain消息(message)的使用
开发语言·langchain
qq_423233905 小时前
C++与Python混合编程实战
开发语言·c++·算法
m0_715575345 小时前
分布式任务调度系统
开发语言·c++·算法
csbysj20205 小时前
选择(Selectable)
开发语言
CSDN_RTKLIB5 小时前
简化版unique_ptr说明其本质
c++