计算机组成原理——实验3
浮点数及数的表示
实验目的:
本实验将帮助你理解计算机如何存储整型数和浮点数.
相关信息
单精度浮点数的存储格式如下:
SEEE EEEE EIII IIII IIII IIII IIII IIII
这里:
S是符号位,0代表正, 1代表负,E表示指数(偏移127),I是有效位,记住缺省1。
例如,浮点数1.0应表示为0x3F800000。试验证.
练习
练习1: 整数(Integers)
用MIPS指令序列最短的写出“判断放在两个寄存器中的数相加是否有进位”的代码(呵呵,只用两条指令就可以实现)。这两个寄存器为$t3和$t4。如果进位为0或1,则在寄存器$t2中放0或1。用下面的值检验你的程序:
操作数1
操作数2
进位否?
0x7fffffff
0x80000000
no
0xffffffff
0
no
0xffffffff
1
yes
练习2: 浮点数
求正浮点数x,使得式子x+1.0=x成立。在MIPS汇编语言程序中检验你的结果正确,并给出X存储在计算机中的值的指数和小数部分(你可以使用计算机也可以手算)。
注: 这里给出的MIPS程序p2.s,可以帮助你做浮点数加法实验。它将输出既放在$f12中,也放到$s0中, 因此,可以通过输出$s0来检查浮点值的16进制表示.
练习3: 浮点数
接下来,求使x+1.0=x成立的最小正浮点数. 同样请给出存储的指数和小数部分。
练习4: 浮点数结合律(Associativity)
最后,用你前二部分学到的知识,确定一组正浮点数,使得按不同的顺序对其相加,将产生不同的值。你可以仅使用三个数来完成本作业。(提示:可以用你在练习3中得到的若干个x与1.0相加).
本实验的结果说明:对于三个浮点数a,b,c, a+b+c不一定等于c+b+a.
如果时间允许,你应该编写程序来实现按不同顺序相加。可直接修改前面2-3部分的代码来实现。