正文

浮点数 2006-05-25 17:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vfdff/14850.html

分享到:

  12345678900(十进制)=> 1011011111110111000001110000110100(34位精确值) ========> 符号位:0                          +127指数:33(100001=>00100001 =====> 10100000                  原码         阶码(移码)                  尾数:1.01101111111011100000111(取24位) =>(注意:前面的1在实际存放时为了多存放一位而隐含,即浮点数的尾数的最高位永远隐含为1)0 10100000 01101111111011100000111(实际放了尾数后面的23位)    指数          尾数    最后结果就是01010000001101111111011100000111 现在再把它还原成整数:(1)取尾数23位:01101111111011100000111(2)在前面加上隐含的1,变成:101101111111011100000111(3)取指数8位:10100000(4)指数减127得:100001(33)(5)尾数向左移动10位(尾数本身23位,33-23=10):1011011111110111000001110000000000此即12345678848     #define uchar unsigned char#define uint unsigned int#include <stdio.h>void FtoC(void){    float a ;    uchar i,*px;    uchar x[4]; /*定义字符数组,准备存储浮点数的四个字节 */    void *pf;    px=x; /* px指针指向数组x */    pf=&a ; /*void 型指针指向浮点数首地址*/    a=34.526 ;    for(i=0;i<4;i++)    {        *(px+i)=*((char*)pf+i);        /*强制void 型指针转成char型,因为*/    }   /*void型指针不能运算*/    for(i=0;i<4;i++)  printf("%d",x); /*   */} main(){    FtoC() ;    getch();}可以用这个程序得到 浮点数转变为 IEEE的标准存放格式 http://boxer.programfan.com

阅读(3762) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册