1.08k likes | 1.23k Views
第五章 运算器部件. 5.1 数据表示 5.2 运算方法 5.3 运算器. 5.1 计算机中数据的表示方法. 计算机中的数据通常可以分为两中类型:. 符号数据 数值数据. 一、字符数据的表示方法. 1.ASCII 码 ( American Standard Code for Information Interchange ). 包括: 26 个英文字母的大小写、 10 个数字、各种常用符号、控制符号等,共计需要 128 个编码。. 高 3 位 011. 低 4 位 0100. 4 = (34) 16. 8421 2421 5421.
E N D
第五章 运算器部件 5.1 数据表示 5.2 运算方法 5.3 运算器
5.1 计算机中数据的表示方法 计算机中的数据通常可以分为两中类型: • 符号数据 • 数值数据
一、字符数据的表示方法 1.ASCII码 (American Standard Code for Information Interchange) 包括:26个英文字母的大小写、10个数字、各种常用符号、控制符号等,共计需要128个编码。
高3位 011 低4位 0100 4= (34)16
8421 2421 5421 余3码 格雷码 • 2.BCD码:十进制数的编码格式 • (Binary Coded Decimal) 有权码 BCD 无权码
二、数值数据的表示方法 • 计算机中有符号数的表示方法 • 机器数的定点表示与浮点表示 • 浮点数阶码的移码表示 • 实用浮点数格式
1.基本概念 • 真值:用“+”、“-”号表示的实际数值。 • 机器数:符号和数值一起编码表示的二进制数。 常用的机器数有原码、反码和补码三种表示方法。(运算是目的)
1)原码表示 2.计算机中有符号数的表示方法 用原码表示带符号的二进制数时, • 符号位用0表示正,1表示负; • 数值位保持不变。 原码表示法又称为符号•数值表示法。
则: [X1]原= 0.1011 [X2]原 = 1.1011 [X3]原= 01101 [X4]原 = 11101 若: X1= +0.1011 X2= -0.1011 X3= +1101 X4= -1101
原码特点是: 简单直观,与数据真值的转换方便,进行乘除运算比较容易。但是用原码进行加减运算不方便,既要考虑数的符号又要考虑其数值,比如说两个异号数相加,或两个同号数相减,就要做减法,机器中就需要增加减法器,为了使机器的结构简单,把减法运算转换为加法运算就引入了反码和补码的表示形式。
2)反码表示 • 符号位与原码相同: 即用0表示正,用1表示负; • 数值位与符号位相关: 正数反码的数值位和原码的数值位相同, 负数反码的数值位是原码的数值位按位取反.
若: X1=+0.1011 X2=-0.1011 X3=+1101 X4=-1101 则: [X1]反 = 0.1011 [X2]反 1.0100 [X3]反 = 01101 [X4]反 = 10010
3)补码表示 • 符号位与原码、反码相同; • 数值位与符号位相关: 正数补码的数值位与原码、反码相同;负数补码的数值位是原码的数值位按位取反,并在最低位加1。
X1 = +0.1011 X2 = -0.1011 X3 = +1101 X4 = -1101 [X1]补 = 0.1011 [X2]补 = 1.0101 [X3]补 = 01101 [X4]补 = 10011
采用补码的最大优点: 就是符号位与数值位一起参加运算,并且可以将减法运算用加法实现,从而有利于运算器结构的简化,所以目前大多数计算机均采用补码这种机器数形式表示有符号数。
练习:已知下列各数的补码,求它们的真值。 [x]补=1.101100, [y]补=0.101011
数符 数值位 定点整数 约定 数符 数值位 定点小数 约定 3.机器数的定点、浮点表示 1)定点数表示法 约定小数点在固定的位置。有二种情况:
设数值位为 n 位 ,用原码表示时: 定点小数的表示范围: -(1-2-n)≤ X ≤ +(1-2-n) 定点整数的表示范围: -(2n-1)≤ X ≤ +(2n -1)
采用补码表示时,定点数的表示范围: -1≤ X ≤ 1-2-n ,-2n ≤ X ≤ 2n -1 0 -128 +127 在字长8位时定点整数的范围 简单直观; 但数值表示范围太小,运算时易产生溢出。
练习题: 设某机字长16位,问:在下列几种情况下所能表示数值的范围。 (1)无符号整数 (2)用原码表示的定点小数 (3)用补码表示的定点小数 (4)用原码表示的定点整数 (5)用补码表示的定点整数
+ + N = M × J E 2)浮点数表示法 (范围与精度) 相当于数学上的指数表示法。 可以将一个任意的二进制数N 表示为: 其中: M 称为尾数,为定点小数 E 称为阶码,为定点整数 J 基数,通常为2,在机内隐含
1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 数符 尾数 阶码:包括符号位 举例:(-1101.00101)2在机内的浮点表示。 设机器字长为16位,尾数占10位. 解:(-1101.00101)2 = -0.110100101×24 即:尾数为-0.110100101 阶码为 +4 (0100),若都采用原码表示时,则有 机内的表示形式:
尾数(m位) 阶码(P位) … … … 浮点数的表示范围: 设阶码数值为 P 位,尾数数值为 m 位 ,符号各占一位
有两种情况: (1)采用原码和反码阶码和尾数表示时 浮点正数的表示范围为: +2-m×2-(2p-1) <= +X <= +(1-2-m)×2+(2p-1) 浮点负数的表示范围为: -(1-2-m)×2+(2p-1) <= -X <= -2-m×2-(2p-1)
(2)用补码表示阶码和尾数时 浮点正数的表示范围为: +2-m×2-2p<= +X <= +(1-2-m)×2+(2p-1) 浮点负数的表示范围为: -1×2+(2p-1) <= -X <= -2-m×2-2p
练习:某浮点数字长64位。其中:阶码16位,含1位阶符,补码表示;尾数48位,含1位数符,原码表示,问其所能表示的正数范围是多少?练习:某浮点数字长64位。其中:阶码16位,含1位阶符,补码表示;尾数48位,含1位数符,原码表示,问其所能表示的正数范围是多少?
3)浮点数的规格化处理 规格化:要求浮点数尾数值的最高位为1。 例:将非规格化的浮点数0.0110×211和 -0.0011×20转换成规格化浮点数表示。 解:0.0110×211的尾数左移一位,变成0.1100 ,同时阶码的值减1, 得到其规格化表示为 0.1100×210。 -0.0011×20的尾数左移二位,变成0.1100 ,同时阶码的值减2, 得到的规格化表示为0.1100×2-10。
四、浮点数阶码的移码表示 定义:[X]移 = 2n + X 其中 X 为真值 2n为偏置值,n为X的位数 例:[+1011]移= [-1011]移= 10000+1011= 11011 10000-1011= 00101
移码与其它机器数相比有以下特点: • 用“0”表示负号、用“1”表示正号。 • 同一个真值其移码的表示与补码的表示只是符号位相反,数值位完全相同。 • 其编码能直接反映出所表示真值的大小,因此移码的作用是方便浮点数的运算。
编码 原码 反码 补码 移码 0000 +0 +0 0 -8 0001 +1 +1 +1 -7 0010 +2 +2 +2 -6 …… …… …… …… …… 0111 +7 +7 +7 -1 1000 -0 -7 -8 0 1001 -1 -6 -7 +1 1010 -2 -5 -6 +2 1011 -3 -4 -5 +3 1100 -4 -3 -4 +4 1101 -5 -2 -3 +5 1110 -6 -1 -2 +6 1111 -7 -0 -1 +7
mf e m 数符 阶码 尾数 五、实用浮点数格式 IEEE 754标准的浮点数格式 其中:阶码用移码表示 尾数用原码表示
mf e m 数符 阶码8位 尾数23位 实用短浮点格式(32位) 注意以下二点: 1) 阶码采用移码表示,偏置值为7FH(127) 2) 尾数规格化且采用隐蔽位技术
IEEE 754标准中的三种浮点数 符号位 阶码位 尾数数码位 总位数 短浮点数: 1823 32 长浮点数: 1115264 临时浮点数: 11564 80
0100 0001 01111100 0000 0000 0000 0000 例题1:求(15.75)10的实用短浮点格式。 解:①将(15.75)10 转换为二进制; ②表示成规格化二进制格式,并注意隐蔽位,以确定尾数部分值; ③计算阶码的移码值 得到该数的短浮点数格式如下: 4 1 7 C 0 0 0 0 H (15.75)10 = 417C0000 H
阶码(8位) 尾数(23位) 隐蔽位 例题2 求出短浮点数C2308000H 所表示的真值。 1100 0010 0011 0000 1000 0000 0000 0000 1100 00100 [e]移= 10000100 e =[e]移 – 7FH=101 M= 1.011 0000 1000 0000 0000 0000 X = -1.0110001×2+101
本节内容小结: 机器数的定点数表示方法、表示范围。 机器数的浮点数表示方法、表示范围。 IEEE 754的实用短浮点数格式的转换。
5.2 运算方法 5.2.1 定点加减法运算及其实现 5.2.2 定点乘法运算及其实现 5.2.3 浮点数的运算方法
5.2.1 定点加减法及其实现 一、补码加减法运算 1. 运算规则 [X+Y]补 = [X]补 + [Y]补 [X-Y]补 = [X]补 + [-Y]补
0.1 0 1 1 +1.0 0 1 0 1.1 1 0 1 [例1]:X=0.1011, Y= -0.1110, 求 X+Y。 解:因为 [X]补=0.1011 [Y]补=1.0010 所以 : [X+Y]补= 1.1101 X+Y = - 0.0011
0.1 0 1 1 +0.0 0 1 0 0.1 1 0 1 [例2]:X=0.1011, Y= -0.0010, 求 X-Y。 解:因为 [X]补=0.1011 [Y]补=1.1110 [-Y]补=0.0010 所以 : [X-Y]补= 0.1101 X-Y = + 0.1101
2.利用补码的优点 • 采用补码进行加、减法运算可将减法变为加法运算实现。 • 运算过程中,符号位与数值位一样参加运算。 • 符号位向更高位的进位自然丢失,可方便获得结果的符号。
二、定点加减法运算中的溢出问题 1.溢出的定义: 当运算结果超出所定义的有符号数的范围时即发生溢出。 溢出发生,结果就不正确了,因此需要进行检测和指示。 “机器字长和数据的表示方法”
0 1 0 1 1 +0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 +1 1 0 0 1 0 1 1 1 0 例如:在字长5位时,溢出发生的情况 两个正数相加结果为负数的情况 两个负数相加结果为正数的情况
无溢出 2.溢出的检测和判断方法 1)用变形补码(双符号补码运算的结果)来判断。若运算结果的符号位为: 01 正溢:在正数端溢出 10 负溢:在负数端溢出 00 11
00 1011 + 00 0101 01 0110 00 1011 + 11 1011 100 0110 双符号位溢出的检测和判断举例 若X=0.1011 Y= -0.0101 [X]补= 00 1011, [Y]补= 11 1011 [-Y]补= 00 0101 X+Y,去掉最高位进位 结果无溢出 X-Y,结果溢出!
如何利用变形补码产生溢出信号 若定义 操作数: [X]补 = XS1 XS2. X1X2 … … Xn [y]补 = yS1 yS2. y1y2 … … yn 其和为: [Z]补 = zS1 zS2. z1z2 … … zn 则溢出信号为 OF = ZS1⊕ZS2
0 1 0 1 1 + 0 1 1 0 0 1 0 1 1 1 2)利用两种进位信号判定溢出 定义:符号位的进位为Cs 最高数值位的进位为C1 C1 =1 Cs =0 OF=1 则溢出信号为 OF =Cs⊕C1
Si Ai Bi 全加器 Ci Ci-1 = Ai⊕ Bi ⊕Ci-1 Si = Ai· Bi ﹢(Ai⊕ Bi)·Ci-1 Ci 三、定点加减法运算的实现 1.全加器结构
S1 S4 S3 S2 C4 C3 C2 C1 =1 =1 =1 =1 FA4 FA3 FA1 FA2 M B3 B2 B1 B4 A2 A1 A4 A3 四位串行进位加减法器 M=0 做 A+B M=1 做 A-B 2.串行进位的并行加法器