1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂

2025-10-30
| 25页
| 138人阅读
| 1人下载
精品

内容正文:

计算机原理 -第4课时- 电工版第五版 有符号二进制数的表示方法及溢出问题 教学目标 了解计算机内有符号二进制数的表示方法 掌握原码、反码和补码的概念、表示及相互转换 理解有符号数运算时溢出问题的产生及判断方法 教学重难点 原码、反码和补码的表示方法 原码、反码和补码之间的转换方法 有符号数运算溢出的判断 让我们一起开启单片机的学习之旅。 导入新课 在计算机中,数分为无符号数和有符号数。 有符号数如何在计算机中表示呢? 在运算过程中又会出现什么问题呢? 让我们一起学习有符号二进制数的 表示方法及溢出问题。 新知讲授 概述 计算机内的数分为无符号数和有符号数,有符号数需将正、负号数字化,用一位二进制数(符号位)表示,“0” 表示正,“1” 表示负,有原码、反码和补码三种表示形式。 无符号数和有符号数 无符号数:仅表示非负整数(如 0、1、2...),所有二进制位均为数值位(如 8 位无符号数范围 0~255),适用于计数、地址等场景​ 有符号数:需表示正、负整数(如 - 3、+5...),需将 “正负号” 数字化,通常规定最高位为符号位(占 1 位),剩余位为数值位:符号位 “0” 表示正数,“1” 表示负数(如 8 位有符号数,第 7 位为符号位,第 0~6 位为数值位) 有符号二进制数的表示方法 新知讲授 原码——有符号数最基础的表示方法 规则为:符号位(最高位)+ 数值的绝对值二进制,其中符号位 “0” 表示正数,“1” 表示负数,数值位保留该数绝对值的二进制形式(若不足字长,数值位高位补 0)。 示例解析(以 8 位字长为例)​ 正数示例:+7 的绝对值为 7,7 的 8 位二进制为 00000111,符号位为 0,故 [+7] 原 = 0 0000111(可简写为 00000111B,符号位与数值位合并)​ 负数示例:-7 的绝对值为 7(二进制 00000111),符号位为 1,故 [-7] 原 = 1 0000111(简写为 10000111B) 有符号二进制数的表示方法 新知讲授 反码——为解决原码减法运算复杂而设计的过渡形式 规则分两种情况:​ 正数的反码:与原码完全相同(符号位为 0,数值位为绝对值二进制)​ 负数的反码:符号位保持为 1(表示负数),数值位对原码的数值位 “按位取反” 示例解析(以 8 位字长为例) 正数示例:+7 的原码为 00000111B,根据规则,正数反码与原码一致,故 [+7] 反 = 00000111B(十六进制 07H)​ 负数示例:-7 的原码为 10000111B,符号位保持 1,数值位 0000111 取反为 1111000,故 [-7] 反 = 11111000B(十六进制 F8H) 有符号二进制数的表示方法 新知讲授 补码 - 模的概念 “模”(Modulus)是计量系统的 “计数范围” 或 “循环周期”,类似于日常生活中的 “时钟”(模为 12,时针从 12 到 11 循环)、“月份”(模为 12)。 在计算机中,模由 “字长” 决定,即 n 位二进制数的模为 2ⁿ(所有 n 位二进制数的总数): 8 位二进制数:可表示 0~255 共 256 个数值,故模为 2⁸=256​ 16 位二进制数:可表示 0~65535 共 65536 个数值,故模为 2¹⁶=65536 有符号二进制数的表示方法 新知讲授 补码——计算机中存储和运算有符号数的标准形式 正数的补码:与原码、反码完全一致,即符号位为 0,数值位为该数绝对值的二进制形式(因正数绝对值小于模 2ⁿ,补码 = 自身)​ 负数的补码:① 基于反码:负数的补码 = 负数的反码 + 1(最常用的计算方法);② 基于模运算:负数的补码 = 2ⁿ - 该负数的绝对值(本质定义) 示例解析(以 8 位字长为例,模 = 256) 正数示例:+7 的绝对值为 7(二进制 00000111),符号位为 0,故 [+7] 补 = 00000111B(十六进制 07H),与原码、反码一致​ 负数示例(方法①:反码 + 1):-7 的原码为 10000111B,反码为 11111000B,反码加 1 得 11111001B,故 [-7] 补 = 11111001B(十六进制 F9H) 有符号二进制数的表示方法 新知讲授 已知原码求补码 示例:已知某数 X 的原码为 10110100B,求 X 的补码。 1 0 1 1 0 100 (原码) 1 1 0 0 1 011 (符号位不变,数值位取反) + 1 1 1 0 0 1 1 0 0 (补码) 所以 [X] 补 = 11001100B 原码、反码和补码之间的转换 步骤:符号位不变,数值部分按位求反,再在末位加 1。 新知讲授 已知补码求原码 示例:已知某数 X 的补码为 11101110B,求其原码。 1 1 1 0 1 1 1 0 (补码) 1 0 0 1 0 0 0 1 (符号位不变,数值位取反) + 1 1 0 0 1 0 0 1 0 (原码) 所以 [X] 原 = 10010010B 原码、反码和补码之间的转换 步骤:符号位不变,数值部分按位求反后,再在末位加 1。 新知讲授 求补 将 [X] 补的所有位(包括符号位)一起逐位取反,然后在末位加 1,可得 - X 的补码 [-X] 补。 [ + 9 7 ] 补 = 0 1 1 0 0 0 0 1 ([+97]补) ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 0 0 1 1 1 1 0 (逐位取反) + 1 1 0 0 1 1 1 1 1 ([-97]补) 原码、反码和补码之间的转换 示例:求 + 97、 - 97 的补码。 [+97] 补 = 01100001 求 [-97] 补: 新知讲授 已知补码求对应的十进制数 示例:已知某数 X 的补码为 10101011B,求其所对应的十进制数。 1 0 1 0 1 0 1 1 (补码) 0 1 0 1 0 1 0 0 (按位取反) + 1 0 1 0 1 0 1 0 1B = 85 (绝对值)所求十进制数为 - 85。 原码、反码和补码之间的转换 方法 1:“求反加 1” 法 将补码按位取反,再在最低位加 1,得到绝对值,前面加负号。 方法 2:“零减补码” 法 用数零减补码,不理会最高位借位,所得结果为绝对值,结果相同。 新知讲授 8 位二进制代码表示对照表——部分 原码、反码和补码之间的转换 二进制代码表示 无符号十进制数 原码 反码 补码 00000000 0 +0 +0 +0 00000001 1 +1 +1 +1 00000010 2 +2 +2 +2 01111100 124 +124 +124 +124 01111101 125 +125 +125 +125 01111110 126 +126 +126 +126 01111111 127 +127 +127 +127 10000000 128 -0 -127 -128 10000001 129 -1 -126 -127 10000010 130 -2 -125 -126 ... ... ... ... ... 11111100 252 -124 -3 -4 11111101 253 -125 -2 -3 11111110 254 -126 -1 -2 11111111 255 -127 -0 -1 新知讲授 溢出概述 溢出(Overflow)是指有符号数在运算过程中,结果超出当前字长补码所能表示的范围,导致运算结果与实际数学结果不一致的现象。 有符号数与无符号数的溢出差异 有符号数运算时的溢出问题 新知讲授 溢出范围 n 位有符号数(补码)的溢出范围判定规则为:​ 若运算结果 > 2ⁿ⁻¹ - 1 → 正溢出(正数超出上限);​ 若运算结果 < -2ⁿ⁻¹ → 负溢出(负数超出下限); 有符号数运算时的溢出问题 常见字长的溢出范围实例(n=8) 补码表示范围:-2⁷ ~ 2⁷ - 1 = -128 ~ +127;​ 正溢出场景:运算结果 > +127(如 + 120 + +8=+128,+128>+127,正溢出);​ 负溢出场景:运算结果 <-128(如 - 120 + (-10)=-130,-130<-128,负溢出)。 新知讲授 加法溢出判断 对于加运算,次高位(数值部分最高位)形成进位加入最高位,而最高位(符号位)相加(包括次高位的进位)无进位输出,或次高位无进位加入最高位,但最高位有进位输出时,发生溢出。 示例:(+72) + (+98) 有符号数运算时的溢出问题 进位位:1 0 0 0 0 0 0 0​ 操作数1:0 1 0 0 1 0 0 0 B (+72补码)​ + 操作数2:0 1 1 0 0 0 1 0 B (+98补码)​ ---------------------------​ 结果补码:1 0 1 0 1 0 1 0 B (十进制-42) 次高位(第 6 位):1(操作数 1)+1(操作数 2)=10,产生进位(次高位有进位);​ 最高位(第 7 位):0(操作数 1)+0(操作数 2)+1(次高位进位)=1,无进位输出(最高位无进位);​ 新知讲授 减法溢出判断 对于减法运算,当次高位不需从最高位借位,但最高位需借位(正数减负数,差超出范围),或次高位需从最高位借位,但最高位不需借位(负数减正数,差超出范围)时,出现溢出。 示例:(+72) - (-98) 有符号数运算时的溢出问题 被减数:0 1 0 0 1 0 0 0 B (+72)​ - 减数: 1 0 0 1 1 1 1 0 B (-98)​ ---------------------------​ 借位情况:↓ 1 1 1 0 1 1 0 (高位向低位借位)​ 结果: 1 0 1 0 1 0 1 0 B (十进制-42) 次高位(第 6 位):被减数为 1,减数为 0,不需向最高位借位(次高位无借位);​ 最高位(第 7 位):被减数为 0,减数为 1,需向更高位借位(实际无更高位,视为借位成功,最高位有借位); 随堂检测1 已知某数的原码为 11001010B,求其补码。 答案:10110110B 两个 8 位有符号数 10101010B 和 11001000B 相加,判断是否溢出。 答案:溢出 练一练 随堂检测2 求 - 123 的补码(8 位)。 答案:10000101B 已知某数补码为 11110000B,求对应的十进制数。 答案: - 16 练一练 随堂检测3 若字长为 16 位,有符号数的表示范围是多少? 答案:根据公式 - 2ⁿ⁻¹ ≤ X ≤ 2ⁿ⁻¹ - 1 计算,得出:- 32768~+32767 计算 10101010B - 01010100B,判断是否溢出。 答案:未溢出 练一练 随堂检测4 已知某数反码为 10110110B,求其原码。 答案:11001001B 两个有符号数相加,若次高位无进位,最高位有进位,是否溢出? 答案:是 练一练 师生互动 1 在实际编程中,如何避免有符号数运算的溢出问题?请分组讨论并列举一些可行的方法。 课题小结 1. 有符号二进制数的表示方法 有符号二进制数的表示方法及溢出问题 2. 原码、反码和补码之间的转换 已知原码求补码 已知补码求原码 求补 已知补码求对应的十进制数 8 位二进制代码表示对照表 原码 反码 补码 溢出范围 加法溢出判断 减法溢出判断 3. 有符号数运算时的溢出问题 谢谢观看 THANKS Lavf58.46.101 $

资源预览图

1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂
1
1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂
2
1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂
3
1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂
4
1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂
5
1.3 有符号二进制数的表示方法及溢出问题(课件)-《计算机原理》(电工版第五版) 同步精品课堂
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。