|
珞珈山水BBS →
电脑网络 →
程序人生 →
单文区文章阅读
|
| 单文区文章阅读 [返回] |
|---|
|
发信人: DreamRen (追梦人), 信区: Programm 标 题: Re: 请教一个最简单的C问题,高手来帮我 发信站: BBS 珞珈山水站 (Thu Mar 17 14:45:39 2005) 恩,这个东西要到大四<体系结构>才会讲. 可惜找工作的找工作,考研的考研,没多少人认真学,哎``` 偶也没学好! 不知道解答的对不对? IEEE754标准浮点数据格式: -------------------------------------------------- | S | E | M | -------------------------------------------------- 1位 8位 23位 若E=0,且M=0,则N为0。 若E=0,且M≠0,则N=(-1)S·2-126·(0.M)。为非规格化数。 若1≤E≤254,则N=(-1)S·2E-127·(1.M)。为规格化数。 若E=255,且M≠0,则N=NaN(‘非数值’)。 若E=255,且M=0,则N=(-1)S∝(无穷大)。 计算:N=(-1)^0*2^(E-127)*M 编译后生成的语句: 4: float f=123.456f; 00401028 mov dword ptr [ebp-4],42F6E979h 取出十六进制数42F6E979,化为二进制为 0*100 0010 1*111 0110 1110 1001 0111 1001(*为区分点) s=0,E=133,M=(1/2+1/4+1/8+1/32+1/64+1/256+1/512+...)=0.92900002002716064453125 N=1*64*(1+0.92900002002716064453125)=123.45600128173828125 哈哈... 大功告成,与结果吻合. 累.... 如果真要结果的话,可以这样: printf("f=%0.3f\n",f); 【 在 skyzinc (似水年华) 的大作中提到: 】 : main() : { : float f=123.456; : ................... -- ※ 修改:·DreamRen 於 Mar 18 14:32:09 2005 修改本文·[FROM: 202.114.121.*] ※ 来源:·珞珈山水BBS站 http://bbs.whu.edu.cn·[FROM: 202.114.121.*] |
| [返回单文区目录] |
|
|