《计算机组成原理Lecture3浮点数的表示-作业参考答案.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理Lecture3浮点数的表示-作业参考答案.ppt(9页珍藏版)》请在三一办公上搜索。
1、作业3,3-1.将下列十进制数表示成浮点规格化数,阶码4位(含符号),分别用补码和移码表示;尾数6位(含符号),用补码表示。(1)19/512(2)-19/512 3-2.浮点数阶码4位(含阶符),尾数9位(含数符),均用补码表示,求规格化和非规格化时数值范围。3-3.设浮点数的格式为:第15位为符号位,第14位到第8位为阶码,采用补码表示;第7位到第0位为尾数,与符号位一起采用规格化的补码表示,基数为2。问:它能表示的正数和负数的数值范围是什么?,3-4.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2
2、:8080108BH。不同指令 对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的分别是多少?(1)无符号数加法指令(2)带符号数加法指令(3)单精度 浮点数减法指令,3-5.以下是C语言程序,用来计算一个数组a中每个元素之和。当参数len为0时,返回值应该是0,但在机器上执行时,却发生了存储器异常。分析原因并修改程序。float sum_elem(float a,unsigned len)int i;float result=0;for(i=0;i=len-1;i+)result+=ai;ret
3、urn result;,#include stdafx.h#include using namespace std;int _tmain(int argc,_TCHAR*argv)float i=8.1,j=8.0;int k=0;while(i!=j)i/=10;j/=10;k+;coutfloat:kendl;double m=8.1,n=8.0;k=0;while(m!=n)m/=10;n/=10;k+;coutdouble:kendl;,思考!,提示:IEEE754中的最小值:(1+2-23)2(1-127),其精度约2-149约10-44.85,3-1.将下列十进制数表示成浮点规格化
4、数,阶码4位(含符号),分别用补码和移码表示;尾数6位(含符号),用补码表示。(1)19/512(2)-19/512 解:19/512=10011B2-9=0.10011B2-4阶原=1100,阶 补=1100,阶移=0100 尾原=0.10011,尾补=0.10011-19/512:尾补=1.01101,3-2.浮点数阶码4位(含阶符),尾数9位(含数符),均用补码表示,求规格化和非规格化时数值范围。解:阶码4位,用补码表示,其表示范围:尾数用补码,且规格化,其表示范围:尾数用补码,不规格化,其表示范围:正最大:尾数正最大*2阶正最大 正最小:尾数正最小*2阶负最小 负最大:尾数负最大*2阶
5、负最小 负最小:尾数负最小*2阶正最大,1,000 1,111 0 0,001 0,111-23-1 1 23-1,1.00000000 1.01111111 0 0.10000000 0.11111111-1-(2-1+2-8)2-1 1-2-8,1.00000000 1.11111111 0 0.00000001 0.11111111-1-2-8 2-8 1-2-8,3-3.设浮点数的格式为:第15位为符号位,第14位到第8位为阶码,采用补码表示;第7位到第0位为尾数,与符号位一起采用规格化的补码表示,基数为2。问:它能表示的正数和负数的数值范围是什么?解阶码7位(含符号),尾数9位(含符
6、号)阶码用补码,表示范围:-26+26-1尾数用规格化补码,表示范围:1.000000001.01111111,0.100000000.11111111-1-(2-1+2-8),+2-1+(1-2-8)正数范围:2-1 2-26(1-2-8)2(26-1)负数范围:-1 2(26-1)-(2-1+2-8)2-26,3-4 假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。不同指令 对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存
7、器R1和R2的内容,则R1和R2中操作数的分别是多少?(1)无符号数加法指令(2)带符号数加法指令(3)单精度 浮点数减法指令 解:R1:0000 0000 0000 0000 0001 0000 1000 1011 B R2:1000 0000 1000 0000 0001 0000 1000 1011 B无符号数R1的真值为:4235,R2的真值:2155876491带符号整数R1真值为:+4235,R2的真值:-7F7FEF75H单精度浮点数R1的阶:0-127=-127,R2的阶:-126 R1的尾数:1.000 0000 0001 0000 1000 1011B=0.80108BH 21R2的尾数:-1.000 0000 0001 0000 1000 1011B=-0.80108BH 21,3-5 以下是C语言程序,用来计算一个数组a中每个元素之和。当参数len为0时,返回值应该是0,但在机器上执行时,却发生了存储器异常。分析原因并修改程序。float sum_elem(float a,unsigned len)int i;float result=0;for(i=0;i=len-1;i+)result+=ai;return result;解:len为unsigned类型,因此,len为0时,len-1的值为FF.FH,而i=0,条件满足。但a并没开辟足够的空间。,