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。

相关推荐
前路不黑暗@1 小时前
Java:继承与多态
java·开发语言·windows·经验分享·笔记·学习·学习方法
第七序章1 小时前
【C + +】C++11 (下) | 类新功能 + STL 变化 + 包装器全解析
c语言·数据结构·c++·人工智能·哈希算法·1024程序员节
voice6701 小时前
西电现代密码学实验一
开发语言·python·密码学
AA陈超1 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-29 属性信息委托
c++·游戏·ue5·游戏引擎·虚幻
五条凪1 小时前
Verilog-Eval-v1基准测试集搭建指南
开发语言·人工智能·算法·语言模型
初学小白...1 小时前
反射概述and获得反射对象
开发语言·python
后藤十八里2 小时前
2025python学习笔记Part2
开发语言·python
仰泳的熊猫2 小时前
LeetCode:72. 超级次方
数据结构·c++·算法·leetcode
打不了嗝 ᥬ᭄2 小时前
传输层协议TCP
linux·服务器·网络·c++·tcp/ip
屹奕2 小时前
基于EasyExcel实现Excel导出功能
java·开发语言·spring boot·excel