作业帮 > 数学 > 作业

关于浮点数的规格化表示

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/16 07:35:04
关于浮点数的规格化表示
对下列数据作规格化浮点数的编码,假设1位符号位,基数为2,阶码5位,采用移码,尾数10位,采用补码.
(1)、56(10)
(2)、110111(2)
(3)、-0.00381(10)
过程最好能讲的通俗一些.
越通俗越好,本人有书,郁闷!
讲的好了,
问题2和1很类似,就不重复了,我们来看一下问题1和问题3.
(1) 56(10)
1) 符号位
首先这是一个正数,所以符号位是0
2) 尾数和阶码的推导
56的二进制表示是:111000.用小数表示相当于是111000.0000000...
现在我们移动小数点,使得小数点前只有1位.对于这个数当然是向左移动:
移动1位是:11100.000000...
移动2位是:1110.000000...
类推
移动5位是:1.11000000...
好了,现在我们知道阶码应该是5,尾数应该是1100000...
你可能会问,怎么少了一个1?因为有数字前面的0是没有意义的,所以最高位一定是1(比如00000111,相当于111,所以第一个1前面的0都可以省略).我们移动小数点的时候保证小数点前面的是那个最高位的1.所以没有必要表示出来.
3) 阶码
现在我们知道阶码是5,但是是采用移码的.所谓移码就是加上01111(最高位是0,其它位是1).所以最后的阶码是:10100
4) 尾数
补够你要求的10位就行了.因此是1100000000
5) 完整的数
把上面的符号位、阶码和尾数表达出来就可以了,是:
0 10100 1100000000 16进制就是0x5300
(3) -0.00381(10)
1) 符号位
负数,所以是1
2) 尾数的推导
由于整数部分不存在,所以单独推导小数就可以了.采用乘2法,每次乘2取整数,然后继续把小数乘2.
比如你的0.00381乘2是0.00762,整数是0
再乘2是0.01524,整数是0
再乘2是0.03048,整数是0
再乘2是0.06096,整数是0
再乘2是0.12192,整数是0
再乘2是0.24384,整数是0
再乘2是0.48768,整数是0
再乘2是0.97536,整数是0
再乘2是1.95072,整数是1(终于是1了),以后乘的是小数部分
小数部分乘2是1.90144,整数是1
小数部分乘2是1.80288,整数是1
小数部分乘2是1.60576,整数是1
小数部分乘2是1.21152,整数是1
小数部分乘2是0.42304,整数是0
小数部分乘2是0.84608,整数是0
小数部分乘2是1.69216,整数是1
小数部分乘2是1.38432,整数是1
小数部分乘2是0.76864,整数是0
小数部分乘2是1.53728,整数是1
终于算满了10个有效位(心算的,有可能算错,但是大概意思是这样的).
现在我们知道这个数是0.0000000011111001101...
现在我们向右移动小数点,直到整数位是1,
移动1位是:0.000000011111001101...
类推
移动9位是:1.1111001101...
好了,我们知道阶码是-9,尾数是1111001101(同上面的说明,最高的1忽略了)
3) 阶码
阶码是-9,加上01111是00110
4) 尾数
尾数是1111001101
5) 完整的数
合并上面的结果,是:
1 00110 1111001101 16进制是0x9BCD
另,有的浮点数规范中不省略尾数中最高的1,他们相当于从0.1xxxxx...开始计算的.那么阶码和尾数会右略微变化.
写得好累,