求助:关于32位浮点数的问题

kaqiusha001 2009-08-31 02:37:44
题目:如果单精度浮点,32为机器数均为

0xF000_0000,它的浮点数是(___)
它的答案是:-1.0*(2的65次方)

请问它是如何推导出来的啊。
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
budao3 2009-09-01
  • 打赏
  • 举报
回复
用 『DD』定義的浮點數稱為『短實數』,短實數佔有 4 個位元組,共 32 個位元。這 32 位元的最高位元 (第 31 位元) 表示正負值 (sign),若為零表示此數為正數,為一表示此數是負數。第 23 到 30 位元這 8 個位元表示指數部分 (exponent),指數部分是以 2 為底數,但在做乘冪之前,指數還得減去基準數 (bias),短實數的基準數是 127。第 0 位元到第 22 位元是有效數部份 (significand),有效數部份是以 1 開始,依次減半的等比數列 1/2、1/4、1/8、1/16、1/32……的方式排列相加,因為 1 固定所以不表示,而從 1/2 開始。而最後短實數的數值是:
短實數 = (-1)sign×significand×2exponent
以 10.25 為例,組譯器翻譯成 IEEE 格式是 41 24 00 00 先變成二進位 0100 0001 0010 0100 0000 0000 0000 0000,第 31 位元(天藍色)為零表示正數,接下來的 8 個位元(白色)換成十進位是 130,減去基底數 127 等於 3,所以指數部分就是 23。而最後面的部分是有效數,小木偶將它排成直列來說明:
1 ==> 1 (固定值,不在IEEE格式表示出來)
0 ==>表示 1/2*0 = 0
1 ==>表示 1/4*0 = 0.25
0 ==>表示 1/8*0 = 0
0 ==>表示 1/16*0 = 0
1 ==>表示 1/32*1 = 0.03125
以下皆為零
最後 1+0.25+0.03125 為 1.28125,再乘以指數部份 23 即可得 10.25。
大熊猫侯佩 2009-09-01
  • 打赏
  • 举报
回复
32位浮点数的形式写出来是如下格式
符号位 阶码 小数位
0 01111110 00000000000000000000000

0为正1为负,你看看0xF000_0000最高位是0还是1?
kaqiusha001 2009-09-01
  • 打赏
  • 举报
回复
看了看,但是没有搞清楚,0xF000_0000,它的浮点数是:-1.0*(2的65次方) ,就是它的负号是如何得出来的啊
大熊猫侯佩 2009-08-31
  • 打赏
  • 举报
回复
IEEE754标准中有详细的浮点表达规范,或者google之,比如
http://hi.baidu.com/yjp603/blog/item/38ae9e01a89be3031d9583b5.html

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧