当前位置: 首页 > news >正文

GESP三级历年真题解析(原码、反码和补码)



1、📘 题目


unsigned int 占 2 字节,能表示的范围是?

正确答案:A:0 ~ 65535


2、🧮 计算:

(1)字节换算:

2 字节 = 16 位


(2)unsigned(无符号位)

最大值 = 2^16 - 1


A:0 ~ 65535

3、🧠 知识点总结


👉 unsigned:没有负数
👉 范围公式:2 ^ 位数 - 1




1、🟦 题目:

❓ char 的取值范围总是 -128 ~ 127
❌ 错误


2、🧸 故事:char 是“善变的孩子”


有的电脑:char 是 signed

有的电脑:char 是 unsigned


3、🧠 范围区别:

类型范围
signed char-128 ~ 127
unsigned cha0 ~ 255

4、📌 记忆口诀

char 的范围看属性,

有符号的有正负,

无符号的无负数,

取值范围有变化。




1、🟦 题目:

这道题考查的是8位二进制原码表示法的最小整数。


2、什么是“原码”?

(1)原码是一种带符号整数的二进制表示法:


·正数的原码就是它的普通二进制形式,符号位为0;

·负数的原码是绝对值的二进制,符号位为1。


(2)例如:+5的原码是00000101,-5的原码是10000101


3、8位原码结构

(1)符号位(最高位):

0表示正数
1表示负数


(2)7位数值位:表示0到127

所以能表示的范围是:
正数:00000001到01111111→+1到+127

负数:10000001到11111111 →-1到-127

·注意:负零(10000000)存在,但它和正零(00000000)都表示0,不计入负数最小值


4、最小整数是多少?


由于原码不能表示-128(这通常是补码能做到的),

所以原码的最小值是:-127


正确答案是:A.-127



1、🟦 题目:

反码中,零的表示形式有几种?


2、什么是“反码”?

反码(ones'complement)是一种带符号二进制数的表示方法,规则如下:
正数的反码=它本身的二进制(符号位为0)
负数的反码=其正数原码除符号位外,各位取反,符号位为1


3、反码中“0”的表示方式

我们来看8位举例:


(1)正零:

00000000


(2)负零:

11111111


(3)区别:

正零就是普通的全0;

负零是正零的反码(不变符号位,其他取反)→所以变成全1。

正确答案是:B. 2种




1、🟦 题目:

补码10111011对应的真值是多少?


2、补码的规则

补码表示法下(8位):

如果首位是0,就是正数,数值直接转换。

如果首位是1,是负数,要先求“原码”,再取负数。


3、转换步骤

(1)我们要处理的是:

补码:10111011


(2)第一步:识别符号

最高位是1,说明这是一个负数。


(3)第二步:求原码

负数的原码=补码先按位取反+末位加1


(4)步骤一:按位取反(补码→反码)


补码:10111011按位取反→01000100


(5)步骤二:反码+1→原码(二进制)

01000100+1=01000101


(6)转为十进制:

01000101 =69


(7)所以真值是:-69


正确答案是:A.-69


4、拓展:快速判断负数补码真值的方法


(1)对于一个8位补码:

如果是负数,直接用256 -值,再取负数。


(2)比如:

补码:10111011(二进制) = 187(十进制)
真值 = 187 -256 = -69



1、🟦 题目:

补码的加法中,若最高位和次高位进位不同,说明?


2、本题考察的是:补码加法中的溢出判断规则。

补码加法中溢出的判断方法:

在进行补码加法时,如果最高位(符号位)发生了错误改变,即:
符号位的进位(即最高位进位)和次高位的进位不同,说明发生了溢出(overflow)。



3、因此正确答案是:

B.发生上溢


4、溢出条件

(1)补码加法的溢出规则:

  1. 正数 + 正数:结果应为正数。若溢出,会变成负数(符号位为1)。
  2. 负数 + 负数:结果应为负数。若溢出,会变成正数(符号位为0)。
  3. 正数 + 负数:不会溢出(因为结果的绝对值不可能超过任一加数的绝对值)。

(2)关键点

溢出仅发生在符号位参与运算时,且符号位的进位(C_out)与次高位的进位(C_next)不同


(3)示例:正数 + 正数 → 溢出为负数

假设用4位补码表示(范围:-8到7):

  • +5的补码:0101
  • +3的补码:0011

(4)加法过程

0101 (+5) + 0011 (+3) --------- 1000 (-8) (错误结果!)

(5)实际结果
+5 + +3 = +8,但4位补码无法表示+8(最大为+7),因此溢出为-81000)。




1、🟦 题目:

Base64编码中,如果输入字符串的长度为10字节,编码后的字符串长度是多少( )

2、题目中说明:

Base64编码将每3字节的输入数据编码为4字节的输出数据。如果输入数据长度不是3的倍数,会用=号填充。

3、每3个字节(24位)被编码成4个字节(32位)。

如果输入数据长度不是3的倍数,则:

余1字节时,补2个=,编码结果占4个字节。

余2字节时,补1个=,编码结果占4个字节。


4、计算过程:

(1)输入长度为10字节。


(2)计算完整的3字节组数:

10÷3=3组,剩余1字节


(3)这3组完整的3字节数据会编码成:

3×4=12字节


(4) 剩余1个字节,需要补2个=,因此会编码成4个字节。

总长度:
12+4=16字节


5、答案:D.16字节



1、🟦 题目:

在C++中,补码的主要作用是?


2、在C++中,补码的主要作用是:


B.简化整数的加减法运算


3、解释:

补码是计算机中表示负数的一种方式。使用补码来表示整数时,整数的加法和减法运算可以通过相同的硬件电路进行处理,而不需要单独的加法器和减法器。这是因为加法器能够直接处理正负数的加法和减法,不需要额外的转换过程。


4、具体来说:


正数和负数的加法与减法都可以使用相同的加法运算规则,极大简化了硬件设计。

补码的负数是通过将正数的每个位取反并加1来得到的,这使得加法器在处理正负数时变得简单高效。






1、🟦 题目:

[10000011]原=( ) [10000011]补=( ) 分别是数字几?

2、计算过程

(1)计算[10000011]原的十进制值


·二进制数:10000011

●符号位:1(表示负数)

●数值位:0000011

将数值位转换为十进制:
0000011(二进制) = 3 (十进制)
因此,[10000011]原表示的十进制数值为-3。


(2)计算[10000011]补的十进制值


·二进制数:10000011

●符号位:1(表示负数)


(3)补码的计算步骤:


第一步:取反(除符号位外,其余位取反):

10000011->11111100


第二步:加1

11111100 +1=11111101


第三步:将补码11111101转换为十进制:

符号位:1(表示负数)

数值位:1111101


第四部:将数值位转换为十进制:

1111101(二进制)=125(十进制)



因此,[10000011]补表示的十进制数值为-125。


3、最终答案: B、-3 -125



1、🟦 题目:

关于计算机中的编码,下列说法中错误的是?

2、选项分析


(1)A.对于无符号数,原码就是真值

分析:

无符号数没有符号位,所有位都用于表示数值。
因此,无符号数的原码就是其真值。
结论:正确。


(2)B.正数的反码是其本身

分析:

正数的反码与原码相同。
结论:正确。


(3)C.负数的反码和补码是不一样的

分析:

负数的反码是其原码的符号位不变,其余位取反。
负数的补码是其反码加1。
因此,负数的反码和补码是不同的。
结论:正确。


(4)D.负数的反码,在其原码的基础上,各个位取反

分析:

负数的反码是其原码的符号位不变,其余位取反。
题目中说“各个位取反”,包括符号位,这是错误的。
结论:错误。


3、最终答案:D.负数的反码,在其原码的基础上,各个位取反



1、🟦 题目:

为了简化计算机基本运算电路,使加减法都只需要通过加法电路实现,这是使用补码的原因?

2.补码的核心特性:


补码的核心特性是:一个数的补码加上另一个数的补码,结果仍然是这两个数的和的补码。这意味着:
加法和减法可以统一使用加法电路来实现
不需要额外的减法电路,简化了硬件设计。


3.补码的优势:

(1)统一加减法:

加法和减法都可以通过加法电路实现,简化了硬件设计。


(2)符号位处理:

补码的最高位是符号位(θ表示正数,1表示负数),符号位可以直接参与运算。


(3)溢出处理:

溢出结果仍然符合数学规律,无需额外处理。


(4)零的唯一表示:

补码中,0只有一种表示形式(全0)。


4、最终答案:正确✅️



1、🟦 题目:

使用原码进行的计算,2+(-1)的结果是-3

2、加法运算

当使用原码进行加法运算时,直接将符号位和数字部分一起相加,但这种方法在处理负数时会导致问题。具体来说,当正数和负数相加时,符号位的处理并不符合数学上的加法规则,因此结果可能不正确。


3、现在,我们来尝试用原码计算2+(-1):

(1)将原码相加:

2的原码: 00000010

-1的原码:10000001

相加结果:10000011


(2)解读结果:

结果10000011的最高位是1,表示这是一个负数。

其余位0000011转换为十进制是3。

因此,结果解读为-3。


4、最终答案:正确✅️



1、🟦 题目:

反码计算加减法:加法与减法结果都是正确的,只是解决不了-0的问题

2、反码加减法:


(1)加法:

当两个加数符号相同时,直接对它们的反码进行二进制加法,然后取结果的反码作为最终结果的补码(再转换为真值)。
当两个加数符号不同时,将绝对值较大的数的反码加到绝对值较小的数的反码上(考虑符号位),然后对结果取反码作为最终结果的补码。


(2)减法:

减法可以转换为加法,即a-b=a+(-b)。

因此,减法操作可以看作是对被减数和减数的反码(减数先取负,即取其反码)进行加法运算。


3、-0的问题

在反码表示中,0和-0的反码是相同的,都是000...0(对于n位二进制数)。这意味着在反码运算中,无法区分0和-0。
当两个正数相加得到0时,它们的反码相加后仍然是0,再取反码还是0,表示结果正确。


4、无法区分产生的问题:

由于反码无法区分0和-0,因此在某些情况下(特别是在涉及溢出和符号扩展的运算中),这种无法区分可能会导致问题。例如,在符号扩展时,我们通常需要保留数的符号位,但反码无法明确表示-0的符号,这可能导致运算结果的符号信息丢失或错误。


5、最终答案:正确✅️


http://www.jsqmd.com/news/494338/

相关文章:

  • leetcode 困难题 1402. Reducing Dishes 做菜顺序
  • 2026年热门的AI品牌管理品牌推荐:AI品牌管理系统/AI品牌营销管理系统实力公司推荐 - 品牌宣传支持者
  • leetcode 1405. Longest Happy String 最长快乐字符串-耗时100
  • 计算机毕设 java 梅州红色文化传承小程序 Java+SpringBoot 梅州红色文化小程序 微信小程序红色文化传承平台
  • 2026 独立开发者 AI 工具栈:我的选择和理由
  • 从交易者到“合伙人”:Cber经纪人体系全解析,你的每一份共识都算数
  • 5个免费IP查询API对比:哪个最适合你的项目?(附性能测试数据)
  • ChatTTS下载安装全攻略:从原理到避坑指南
  • 2026年知名的AI品牌视频公司推荐:AI品牌宣传片/AI品牌营销管理/AI品牌营销管理系统品牌公司推荐 - 品牌宣传支持者
  • FreeRTOS工程项目实践
  • 计算机毕设 java 美文推荐系统 Java+SpringBoot 美文推荐分享平台 Web 版美文博文交流网站
  • 基于计算机视觉的万物识别模型性能优化策略
  • 2026年口碑好的电热风炉厂家推荐:矿用电热风炉/井口防冻电热风炉源头工厂推荐 - 品牌宣传支持者
  • Unity开发次世代写实手游开发大纲
  • leetcode 困难题 1406. Stone Game III 石子游戏 III
  • sql性能分析和sql优化
  • Matlab实用指南:一键运行15种回归基础模型全家桶,涵盖ANN、RNN等高级模型,中文注释...
  • StructBERT文本相似度模型在网络安全中的应用:恶意文本与钓鱼内容识别
  • 2026年质量好的纸尿裤公司推荐:婴儿纸尿裤/内裤式纸尿裤/粘贴式纸尿裤生产厂家推荐 - 品牌宣传支持者
  • 2026 SiteGround 官网人工在线客服聊天指南
  • eNSP web方式防火墙透明模式配置
  • 高通 QCS8550 边缘智能实践:基于 Qwen2.5-7B 与 Agent+RAG 构建本地化知识助手
  • leetcode 1408. String Matching in an Array 数组中的字符串匹配-耗时100
  • c++基础+类和对象
  • 基于单矢量控制的永磁同步电机模型预测电流控制Simulink仿真模型 对应学习资料: 1
  • 文墨共鸣模型效果惊艳展示:多风格长文本创作集锦
  • 团队协作只能靠“在线文档”?大错特错!2026 年企业网盘“硬核协作”能力横评
  • 27.3k stars!Fish Speech:开源 TTS 的天花板,10 秒克隆任意声音!
  • 家庭网络小白必看:为什么你的手机和电脑能直接传文件?揭秘同一网段通信的底层逻辑
  • SAP Fiori Launchpad 全景解析:从统一入口到角色化工作台,再到移动端落地实践