于是得到:
S=0, e = 1,E= 1+01111111 =10000000,M = 10010010000111111011010 最后得到32位浮点数的二进制存储格式为:
0100 0000 0100 1001 0000 1111 1101 1010=(40490FDA)16
c) 首先将6400转换成二进制数: 64000=1100100000000
移动小数点,使其变成1.M的形式 1100100000000=1.100100000000×212 于是得到: S=0, e = 12,E= 1100+01111111 =10001011,M = 1001 最后得到32位浮点数的二进制存储格式为: 0100 0101 1100 1000 0000 0000 0000 0000=(45C80000) 16 2.10 求与IEEE754 32位浮点数43940000H对应的十进制数。 解: 43940000H=(0100 0011 1001 0100 0000 0000 0000 0000)2 S=0,E=(10000111)2-127=8,M=1.00101 所以表示数为100101000,对应的十进制数为296。 2.11 求32位 IEEE754 浮点数能表示的最大数和最小数。 解:用IEEE754格式(E的取值范围:1~254,留出全0和全1分别表示0和无穷大) 31 30 23 22 0 S E M (1) 最大数的二进制表示: 0 11111110 11111111111111111111111 即 2(2-2) (2) 最小数的二进制表示: 1 11111110 11111111111111111111111 即 - 2(2-2) 2.12 设有两个正浮点数:N1=2m×M1,N2=2n×M2。 (1)若m>n,是否有N1>N2? (2)若M1和M2是规格化的数,上述结论是否正确? 解:(1)不一定。 例如,N1=23×0.001,N2=22×0.01,此时m>n,却有N1=N2。 再如,N1=23×0.001,N2=22×0.1,此时m>n,却有N1<N2。 (2)正确。
因为浮点数规格化,要求尾数的最高位为非0数码,即当尾数的值不为零时,其绝对值应大于或等于(1/2)10。
那么M1和M2都必须是0.1× × ? ×的形式。这时,若m>n,则一定有N1>N2。
2.13 设二进制浮点数的阶码为3位,尾数是7位。用模2补码写出它们所能表示的最大正
127-23127-23
数、最小正数、最大负数和最小负数,并将它们转换成十进制数。 解: 补码 真值
3-6
最大正数: 011;0.111111, 2×(1-2)
3-6
最小正数: 101;0.000001, 2×2
3-6
最大负数: 101;1.111111, -2×2
3-6
最小负数: 011;1.000000, -2×(1-2)
2.14 将下列十进制数表示成浮点规格化数,阶码4位,尾数10位,各含1位符号,阶码和
尾数均用补码表示。
(1)57/128 (2) —69/128 解:(1)57/128=(0.0111001)2,记x=0.0111001,则[x]原=[x]反=[x]补=0.0111001, 规格化:[x]补=0.111001*2-1
阶码的原码为:1001,因此补码为:1111 尾数为:0111001000
表示成浮点规格化数:1111 0111001000
(2)-69/128=(-0.1000101)2,记x=-0.1000101,则[x]原=1.1000101,[x]反=1.0111010,[x]补=1.0111011,
无需规格化,阶码为0000,尾数为1011101100 表示成浮点规格化数:0000 1011101100
2.15 设有效信息为01011011,分别写出奇校验码和偶校验码。如果接收方收到的有效信息为01011010,说明如何发现错误。 解:奇偶校验位分别为:0和1, 奇校验码:010110110 偶校验码:010110111 如果采用奇校验,则发送方发出的奇校验码x=010110110(前8位是有效信息位,最后一位是校验位),
如果接收方收到的x=010110100 (只有1位出错,最后一个0是校验位), 接收方按奇校验方式根据01011010计算得到的验位C’=1 ,与从信息中读到得校验码的取值不同,表明传送的信息发生了错误。 如果采用偶校验,利用相似的方法可以发现错误。
2.16由 6 个字符的 7 位 ASCII 编码排列,再加上水平和垂直偶校验位构成如表2.23的行列结构(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位)
表2.23 ASCII码交叉校验
字符
7 位 ASCII 码
1 X3 1 1 X8
HP 0 1 0 1 0
3 0 X1 X2 0 0 1 Y1 1 0 0 1 0 0 + X4 1 0 1 0 1 Y2 0 1 X5 X6 1 1 D 1 0 0 X7 1 0
= 0 X9 1 1 1 X10 VP 0 0 1 1 1 X11
1 1
1 X12
则 X1 X2 X3 X4 处的比特分别为 _1110_; X5 X6 X7 X8 处的比特分别为 _1000_; X9 X10 X11 X12 处的比特分别为 _1011_; Y1 和 Y2 处的字符分别为 __I__ 和 __7__。
解答思路:利用交叉奇/偶校验原理来确定各个X值,再查询ASCII码表获知 Y1 和 Y2是什么字符。 2.17 设8位有效信息为01101ll0,试写出它的海明校验码。给出过程,说明分组检测方式,并给出指误字及其逻辑表达式。如果接收方收到的有效信息变成01101111,说明如何定位错误并纠正错误。 解:被检验位有8位,设检验位有r位 因为:8+r<=2r -1 r=4; 设四位分别为P1,P2,P3,P4 海明码为:P1P20P3110P41110 P1:3,5,7,9,11 P2:3,6,7,10,11 P3:5,6,7,12 P4:9,10,11,12 所以 P1=1,P2=1 P3=0 P4=1 海明码为:110011011110 指错位G1:1,3,5,7,9,11 G2:2,3,6,7,10,11 G3:4,5,6,7,12 G4:8,9,10,11,12 G1=0,G2=0,G3=0,G4=0 图略。 2.18 设要采用CRC编码传送的数据信息x=1001,当生成多项式为G(x)=1101时,请写出它的循环校验码。若接收方收到的数据信息x’=1101,说明如何定位错误并纠正错误。 M(x)?X31001000011解:作模二除法: ??1111?G(x)11011101所以循环码为:1001011。 若接收到的数据信息x’=1101,的1改为0即可。
1101011011?1000?,所以是第2位出错,将第2位G(x)1101
第三章 运算方法和运算器 习 题 三
3.1解释下列名词
变形形补码:即用两个二进制位来表示数据的符号位,其余与补码相同。 溢出:运算结果超出数据类型所能表示数据范围的现象称为溢出。
阵列乘法:采用类似手工乘法运算的方法,用大量与门产生手工乘法中的各乘积项,同时将大量一位全加器按照手工乘法算式中需要进行加运算的各相关项的排列方式组成加法器阵列。
恢复余数除法:比较被除数(余数)与除数的大小是用减法实现的。对原码除法而言,由于操作数以绝对值的形式参与运算,因此,相减结果为正(余数的符号位为0)说明够减,商上1;相减结果为负(余数的符号位为1)说明不够减,商上0。
由于除法通过减法实现,当商上1时,可将比较数据大小时的减法操作与除法操作中的减法操作合并,即商上1后继续后面的除法操作。商上0时表明不够减,但因比较操作时已经实施了一次减法,因此,需要对执行比较操作后的结果加上除数,既将余数还原成比较操作前的数值,这种方法就称为恢复余数法。
不恢复余数除法:又称加减交替法,是对恢复余数法的改进。不恢复余数法的特点是不够减时不再恢复余数,而根据余数的符号作相应处理就可继续往下运算,因此运算步数固定,控制简单,提高了运算速度。
阵列除法:类似于阵列乘法器的思想,为了加快除法的执行速度,也可以采用阵列除法器来实现除法。为简化运算及阵列除法器的结构,对参加运算的数据进行适当的处理,使其以正数的形式参加运算。
行波进位:多位进位之间存在高位进位的产生依赖低位进位的一种进位方式。 并行进位:高、低进位之间不存在具有依存关系,而是同时计算的进位方式。
算术移位:分为算术左移和算术右移。其中算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0,当符号位发生改变时表明发生了溢出。算术右移时,符号位保持不变,其余各位依次右移,最右边一位移出,将符号位拷贝到左边空出的位,一次移位相当于除2。
逻辑移位:逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补\。 逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。
对阶:使阶码相等的过程,对阶的时一般采取小的阶码向大阶码看齐的方式。
规格化:就是使浮点数的运算结果中,将尾数从非规格化数变成规格化数的过程。根据尾数形式的不同,规格化可分为左移规格化和右移规格化。
3.2回答下列问题:
1)为什么采用并行进位能提高加法器的运算速度?
答:由于并行进位电路能很快产生各位的进位信号,使得加法器的速度大大提高。 2)如何判断浮点数运算结果是否发生溢出?
答:由于溢出与数据的表示范围有关,而浮点数的阶码影响到其数据表示的范围,因此,浮点数的溢出是通过接码的是否溢出为判断标志。对于采用双符号位的阶码而言,当双符号位不同时表示浮点数发生溢出,否则则未发生溢出。
3)如何判断浮点数运算结果是否为规格化数?如果不是规格化数,如何进行规格化?
答:当尾数采用补码表示时,若运算结果不是11.0××?×或00.1××?×的形式时,结果就不是规格化数。则应进行相应的规格化处理: