1.81k likes | 2.14k Views
§3 计算机的算术运算. §3 计算机的算术运算. 3.1 数据与文字的表示方法 3.2 定点加法、减法运算 3.3 定点乘法运算 3.4 定点除法运算 3.5 浮点数加法 3.6 浮点数乘法 3.7 MIPS 的浮点指令 3.8 实例: IA-32 中的浮点部件. §3 计算机的算术运算. 3.1 数据与文字的表示方法. 3.1 数据与文字的表示方法. 一、数的表示 定点数(整数) 数值数据
E N D
§3 计算机的算术运算 华东师范大学计算机科学技术系
§3 计算机的算术运算 3.1 数据与文字的表示方法 3.2 定点加法、减法运算 3.3 定点乘法运算 3.4 定点除法运算 3.5 浮点数加法 3.6 浮点数乘法 3.7 MIPS的浮点指令 3.8 实例:IA-32中的浮点部件 华东师范大学计算机科学技术系
§3 计算机的算术运算 3.1 数据与文字的表示方法 华东师范大学计算机科学技术系
3.1 数据与文字的表示方法 一、数的表示 定点数(整数) 数值数据 浮点数 数据信息 字符 非数值数据 汉字 图形 等等 华东师范大学计算机科学技术系
一、数的表示 数值数据表示的三要素: ·数的进位制 ·数的机器码表示 ·数据格式 华东师范大学计算机科学技术系
一、数的表示 1.数的机器码表示(3.2节) 为了方便数的运算操作,在计算机中通常将数的符号位和数值位一起编码 为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为真值,后者称为机器数或机器码 常用的机器码有: 原码、反码、补码、移码 华东师范大学计算机科学技术系
x=+0.1001 [x]原=0.1001 [x]原=1.1001 x=-0.1001 1.数的机器码表示 (1)原码表示法 正数的原码符号位为0,数值位不变 负数的原码符号位为1,数值位不变 采用原码表示法简单,同习惯表示法,但加法运算复杂 例) 华东师范大学计算机科学技术系
x=+0.1001 [x]反=0.1001 [x]反=1.0110 x=-0.1001 1.数的机器码表示 (2)反码表示法 • 正数的反码符号位为0,数值位不变 • 负数的反码符号位为1,数值位按位取反 例) 华东师范大学计算机科学技术系
x=+0.1001 [x]补=0.1001 [x]补=1.0111 x=-0.1001 (3)补码表示法 • 正数的补码符号位为0,数值位不变 • 负数的补码符号位为1,数值位按位取反加1 例) 1.数的机器码表示 华东师范大学计算机科学技术系
1.数的机器码表示 (4)移码表示法 移码通常用于表示浮点数的阶码 假设机器码是个n位的整数,定点整数移码的定义为: [X]移= 2n + X 2n X -2n 移码符号位的表示规律与原码、 反码、补码相反 举例(假设机器码为6位,n=5) x=+10101 [x]移=1,10101 [x]移=25+x=25-10101=0,01011 x=-10101 移码表示同补码表示的差别仅符号位不同 华东师范大学计算机科学技术系
1.数的机器码表示 总结 ①由于补码表示对加减运算十分方便,因 此目前机器中广泛采用补码表示法 补码表示特点: · 补码“0”的表示是唯一的; · 补码表示的范围较原码、反码大 正数:原码=反码=补码 华东师范大学计算机科学技术系
总结 ②有符号数比较指令:slt 无符号数比较指令:sltu P103例题:有符号数比较和无符号数比较 P104例题:用sltu进行两个条件的边界检 测 ③ 有符号数位数的扩展——符号扩展方法 16位→32位 正整数:机器码高位补“0”; 负整数:机器码高位补“1” 华东师范大学计算机科学技术系
一、数的表示 2. 数据格式 计算机中选择数的表示方式需要考虑 的因素 ·要表示的数的类型 ·可能需要的数值表示范围 ·数值表示的精度 ·数据存储和处理所需要的硬件代价 华东师范大学计算机科学技术系
2. 数据格式 计算机中常用的数据表示格式 定点格式 小数点位置固定 机器码位数一定时,数值表示范围有 限,但处理简单 浮点格式 小数点位置浮动 用相同机器码位数表示时,数值表示 范围较定点数大得多,但处理比较复杂 华东师范大学计算机科学技术系
2. 数据格式 (1)定点数的表示方法 所谓定点格式,即约定机器中所有数 据的小数点位置是固定不变的 机器码表示中小数点不再占有数位, 即小数点是隐含的 通常将定点数表示成纯小数或纯整数 对于非纯小数需按比例转换后计算 定点数可以表示无符号数和有符号数 华东师范大学计算机科学技术系
x0 x1 x2… xn-1 xn (1)定点数的表示方法 定点小数 x0表示数的符号,其余为数值位 小数点隐含在x0和x1之间 表示范围为0≤∣x∣≤1-2-n 华东师范大学计算机科学技术系
x0 x1 x2… xn-1 xn (1)定点数的表示方法 定点整数 x0表示数的符号,其余为数值位 小数点位于最低位xn的右边 表示范围为0≤∣x∣≤2n-1 定点小数和定点整数机器码的表示形式相同,但本质不同,因为小数点隐含 华东师范大学计算机科学技术系
(1)定点数的表示方法 ·因为机器码数位有限,所以定点数表示的数值范围相对小。 ·定点运算实现简单 早期的计算机仅使用定点数进行运算, 现在的计算机均适用于多种数据类型。 ·目前计算机中,小数运算一般采用浮点运算;而纯整数一般采用定点表示,因此通常将定点数表示的运算简称为整数运算。 华东师范大学计算机科学技术系
2. 数据格式 (2)浮点数的表示方法 P122 3.6.1 在科学计算中,有些参数用位数有限的 定点数无法表示: 例)阿伏加德罗(Avogadro’s)常数 6.02471023摩尔-1 普郎克(Planck’s)常量 6.625410-27 erg.s 非常大的整数 非常小的小数 • 引入浮点数表示 • 在位数有限的前提下,既扩大数值表 • 示的范围,又保持数的有效精度 华东师范大学计算机科学技术系
(2)浮点数的表示方法 表示 科学计数法 N=M×RE M:尾数,是数值的有效数字部分, 用带符号的定点小数表示。 R:基数,计算机采用二进制,不必 表示 E:阶码,表示小数点的位置 用带符号的定点整数表示。 华东师范大学计算机科学技术系
ES E1 E2 … Em MS M1 M2 … Mn (2)浮点数的表示方法 • 浮点数的机器码表示 阶符 阶码 数符 尾数 ·浮点数的表示范围取决于阶码的位数; 精度则取决于尾数的位数; ·数N的正、负由尾数表示 华东师范大学计算机科学技术系
(2)浮点数的表示方法 • 浮点数表示法的优点 a) 数的表示范围比定点数大 例)设机器码为8位二进制数 (正数,1位符号位) 定点小数:0,0000000 0,1111111 0 1-2-7=127/128 华东师范大学计算机科学技术系
a) 数的表示范围比定点数大 显然,同样的数位,浮点数的表示范围要比定点数的表示范围大得多。 例)设机器码为8位二进制数(正数,1位符号位) 浮点数:取3位阶码,5位尾数(各取1位符号位, 阶码用原码表示) 2-11B 0.0001B 211B 0.1111B 111,00001 011,01111 机器码(原码)表示 0.0000001B 111.1B 2-7 =1/128 7.5 华东师范大学计算机科学技术系
浮点数表示法的优点 b) 不易丢失有效数字,运算精度高 运算结果随时规格化 缺点: 控制电路复杂 华东师范大学计算机科学技术系
(2)浮点数的表示方法 • 浮点数规格化 浮点数: 0.011B211B = 0.0011B 2100B = 0.11B 210B • 目的: ·使浮点数表示标准化(机内表示唯一) ·充分利用尾数的有效数位,提高运算 精度 若尾数仅2位,哪一种表示精度高? 华东师范大学计算机科学技术系
浮点数规格化 • 规格化定义 尾数的最高数位M1必须是有效数字位 即:当尾数的值不为0时,其绝对值应 0.5 保证N值不变 ·规格化整理: 非规格化形式 规格化形式 移动尾数 改变阶码 最高数位与符号位相异(除-0.5) ·判别方法: 原码尾数 正、负数 M1=1 规格化 正数 M1=1 补码尾数 负数 M1=0 尾数左移一位,阶码减1 尾数右移一位,阶码加1 华东师范大学计算机科学技术系
(2)浮点数的表示方法 • 机器零 ·尾数为0,不论其阶码为何值; ·阶码的值负溢出时。 此时,把该浮点数看作零值, 称为机器零 尾数负 阶码正 尾数负 阶码负 尾数正 阶码负 尾数正 阶码正 华东师范大学计算机科学技术系
31 30 23 22 0 短实数: M S E 32位 63 52 51 0 62 长实数: S E M 64位 79 64 63 0 78 临时实数: S E M 80位 (2)浮点数的表示方法 E:8位;M:23位 电气和电子工程师协会 浮点数的标准化 便于软件移值 标准化 广泛采用的标准是IEEE 754标准 E:11位;M:52位 IEEE 754标准浮点数的格式 E:15位;M:64位 移码表示随数值增大而增大,且机器零时阶码为零。该编码对两个指数大小的比较和对阶操作均比较方便。 S:浮点数的符号位,0表示正数,1表示负数 M:尾数,定点小数表示,小数点在尾数域的最前面 采用原码表示法 E:阶码,用移码来表示 华东师范大学计算机科学技术系
MIPS中的浮点数表示方法采用IEEE 754标准的单精度格式和双精度格式 浮点数的标准化 短实数——单精度格式 数值: X=(-1)S (1.M) 2E-127 • 长实数——双精度格式 • 数值: X=(-1)S (1.M) 2E-1023 注意:由于阶码采用的是移码表示法,所以计算真值时必须进行调整,调整的值与阶码域的位数有关 • 临时实数——扩展格式 • 为计算过程中的中间值表示提供更高的 • 精度和更大的指数范围 华东师范大学计算机科学技术系
浮点数的标准化 • 短实数: X=(-1)S (1.M) 2E-127 · E: 8位 0 255 其中:0、255作为特殊值 实际为:1 254 所表示阶码真值为: e = E-127 阶码表示的范围为:2-126 2+127 ·阶码表示大致接近1038 ·而24位尾数所提供的精度 与7位十进制数相仿 华东师范大学计算机科学技术系
短实数: X=(-1)S (1.M) 2E-127 · M: 利用基数为2的规格化数中尾数的 第一位为1的特点,在尾数中设置 一个缺省的“1”,在精度上有效地 给出了一个额外位 · S:符号位,0为正数;1为负数 华东师范大学计算机科学技术系
短实数: P124 图3-15 华东师范大学计算机科学技术系
短实数: 非规格化: (-1)S (0.M) 2E-126 引入非规格化数的目的是实现逐级下溢 特征: 阶码为0,e=-126,表示最小的数值; 尾数高位有一个或多个连续的0 所表示的数在机器零与最小规格化数 之间,提供了极小数的表示方法。 华东师范大学计算机科学技术系
短实数: • 非规格化数的表示: 以十进制系统进行讨论,设一个系统的 最小规格化数为10-99,尾数为5位。 例1)计算:5.67834×10-97 – 5.67812×10-97 解:5.67834×10-97 – 5.67812×10-97 = 0.00022×10-97 = 2.2×10-101 = 0.02200×10-99 华东师范大学计算机科学技术系
非规格化数的表示: 以十进制系统进行讨论,设一个系统的 最小规格化数为10-99,尾数为5位。 例2)计算:2.50000×10-60 ×3.50000×10-43 解: 2.50000×10-60 ×3.50000×10-43 = 8.75000×10-103 = 0.00088×10-99 例1、例2中:计算结果的阶码太小,以至于无法用规格化数表示时,则需对这个结果进行调整,直到阶码成为最小规格化数的指数为止,然后对该数进行舍入并存储。 华东师范大学计算机科学技术系
非规格化数的表示: 以十进制系统进行讨论,设一个系统的 最小规格化数为10-99,尾数为5位。 例3)计算:2.50000×10-60 ×3.50000×10-60 解: 2.50000×10-60 ×3.50000×10-60 = 8.75000×10-120 = 0.00000×10-99 = 0 例3的计算结果太小,以至于非规格化数也无法表示时,则将其归零。 华东师范大学计算机科学技术系
短实数: 例4)将十进制数20.59375表示成IEEE 754 单精度标准代码 解: 分别将整数和小数部分转换成二进制数 (20.59375)10=10100.10011B 规格化表示 10100.10011B=1.010010011B×24 IEEE754标准表示: (-1)S (1.M) 2E-127 于是可以得到: S=0,E=e+127=131=10000011B,M=010010011… 最后得到32位浮点数的二进制存储格式: 0100 0001 1010 0100 1100 0000 0000 0000 =(41A4C000)16 华东师范大学计算机科学技术系
短实数: 例5)将如下IEEE 754单精度标准代码用十 进制数表示。 1100 0000 1010 0000 0000 0000 0000 0000 解: 符号位:S=1; 阶码:E=129; 尾数:M=0.25 代入: (-1)S (1.M) 2E-127 = (-1)1 (1.25) 2129-127 = -1 1.25 22 = -1.25 4 = -5.0 华东师范大学计算机科学技术系
一、数的表示 3. 十进制数串的表示方法 计算机处理十进制数: 表示:以二进制代码表示十进制数; 存储:在存储器中的存放形式。 华东师范大学计算机科学技术系
3. 十进制数串的表示方法 • 压缩的十进制数串形式: 一个字节存放两个十进制的数位,既节省存储空 间又便于直接完成十进制数的算术运算 • · 符号位从BCD码的六种冗余状态中选择, • 如用“12(C)”表示正号;“13(D)”表示负号。 • ·数位加符号位之和不足部分在最高数字位之前 • 补0。 字符串形式(非压缩十进制): 一个字节存放一个十进制的数位(BCD码)或 符号位,主要用于非数值计算的应用领域 华东师范大学计算机科学技术系
3. 十进制数串的表示方法 自定义数据表示: 传统型由指令区分数据类型 自定义数据由数据本身说明数据类型 · 标志符数据表示 · 描述符数据表示 区别: · 标志符与数据一起存储;描述符与数据 分开存放; · 描述符表示,至少增加一次访存; · 描述符是程序的一部分。 华东师范大学计算机科学技术系
2.1 数据与文字的表示方法 二、非数值数据的表示方法 1. 字符和字符串的表示方法 ASCII(American Standard Code for Information Interchange) (美国国家信息交换标准字符码) EDCDIC编码 由IBM公司提出的另一种扩充型字符编码 使用8位二进制编码,可表示256种字符 增加了图形符号表示 华东师范大学计算机科学技术系
二、非数值数据的表示方法 2. 汉字的表示方法 汉字特点 ① 象形文字,种类多:5万左右,常用7千左右 ②字型结构复杂: 偏旁部首上百种 ③ 重音字多: 一个字音代表不同的字型和字义 ④ 多音字多: 一个字有几种发音,并表示不同字义 汉字处理过程 ·汉字输入码:汉字 → 二进制编码 ·汉字内码: 计算机内部处理使用的编码 ·汉字交换码:汉字处理系统间交换信息用的编码 ·汉字字模码:打印、显示的输出编码 华东师范大学计算机科学技术系
2. 汉字的表示方法 问题:利用西文标准键盘 设计思想:利用字母、数字、符号的编码组合生成 汉字信息 (1)汉字输入码 目的:将汉字转换成0、1表示的编码送计算机存储 编码方案的衡量指标:·规则简单易记——易掌握 ·编码量大——覆盖面广 ·重码率小——减少击键数 ·码位短——平均击键数少 输入速度快 华东师范大学计算机科学技术系
(1)汉字输入码 国标区位码:信息交换用汉字编码字符集GB2312-1980 (国标码) 由国家标准总局1980年制定 选用6763个常用汉字组成两级字库,每个汉字用16位 二进制编码唯一标识。 为了表示更多汉字,并和其他国家文字有一统一标 准,1993年推出GB13000-1993标准,每个汉字用32 位二进制编码唯一标识,共表示了20902个汉字。 2000年又起用新标准GB18030-2000,共表示了 27484个汉字。 当前采用的汉字输入编码方法: ·数字编码:用数字串代表一个汉字输入 如国标区位码,按区(行)、位(列)排列二 维数组表,将所有汉字分为94个区,每个汉字 有一个区码和位码,输入汉字时,需要输入对 应的区码和位码 优点:编码唯一性好,编码长度固定 缺点:不易掌握 例)“中”字位于第54区48位,区位码为:5448H 华东师范大学计算机科学技术系
当前采用的汉字输入编码方法: ·拼音码:以汉语拼音为基础的输入方法 如全拼、双拼、智能ABC、紫光等 优点:易掌握 缺点:重码多,需二次输入 码位长 ·字形编码:用汉字的形状来进行的编码 如五笔字型输入法 优点:重码较少 缺点:不易掌握 ·各种编码方案的实现,均需相应的软、硬件支持 ·可采用词组、联想输入,以提高输入速度 ·多媒体计算机可看“字”、听“话” ·混合码:结合各类编码方案的优点,进行组合 华东师范大学计算机科学技术系
2. 汉字的表示方法 • 两字节表示: 西文——ASCII码,最高位为0 汉字——每个字节的最高位为1 优点:与西文信息处理有较好的兼容性,转换容易 例) “啊”字的国标码为3021H,则内码为B0A1H (2)汉字内码 汉字在计算机内部进行存储、运算的信息代码 • 三字节表示:最高位可用于奇偶校验 专用一字节标识汉字 讨论GB2312-80标准 华东师范大学计算机科学技术系
2. 汉字的表示方法 (3)汉字交换码 汉字在计算机系统中进行传输,或各汉字处理 系统交换信息,需采用统一的信息编码格式 通常采用国标码 华东师范大学计算机科学技术系
2. 汉字的表示方法 • 点阵表示法:将汉字划分为各个小区域,以点阵 • 表示 (P31图2.1) • 64×64:可区别仿宋体和黑体 ;96×96:可表示笔锋和曲线 • 汉字库是指所有汉字的字模点阵,每一种字体都 • 有独立的汉字库 • 内码 输出显示或打印 (3)汉字字模码 字模码是汉字的输出形式,用于汉字的显示和打印 原体字型码:文字质量高 但输出机构复杂,速度慢 检索字库 华东师范大学计算机科学技术系
(3)汉字字模码 矢量表示法: 抽取每个笔划的特征坐标值,组成字型的 矢量信息 质量高,可方便地进行平滑旋转、缩放等 变换 华东师范大学计算机科学技术系