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。

相关推荐
仰泳的熊猫2 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
似水明俊德5 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Thera7776 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
炘爚7 小时前
C语言(文件操作)
c语言·开发语言
阿蒙Amon7 小时前
C#常用类库-详解SerialPort
开发语言·c#
凸头7 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun3141597 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
君义_noip7 小时前
信息学奥赛一本通 1952:【10NOIP普及组】三国游戏 | 洛谷 P1199 [NOIP 2010 普及组] 三国游戏
c++·信息学奥赛·csp-s
Moksha2627 小时前
5G、VoNR基本概念
开发语言·5g·php
jzlhll1238 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin