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 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio2 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
laowangpython2 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫2 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch2 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
软件技术NINI2 小时前
webkit简介及工作流程
开发语言·前端·javascript·udp·ecmascript·webkit·yarn
Brendan_0012 小时前
JavaScript的Stomp.over
开发语言·javascript·ecmascript
念2342 小时前
f5 shape分析
开发语言·javascript·ecmascript
苍穹之跃2 小时前
某量JS逆向
开发语言·javascript·ecmascript
思茂信息2 小时前
CST软件如何进行参数化扫描?
运维·开发语言·javascript·windows·ecmascript·软件工程·软件需求