曾经看到的一篇文章:
#define uchar unsigned char
#define uint unsigned int
void FtoC(void){ float a;uchar i,*pxuchar 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型指针不能运算*/}谁能帮忙修改一下,使X表示浮点数的内存表示,即一些0,1串?????????

解决方案 »

  1.   

    自己给自己顶一下!!!!!!!!!!!!!
    各位大侠,能修改一下上面的程序也成,能给讲一下也成。
    unsigned char x[4]为什么是4呢,我觉得应该是32
      

  2.   

    the correct format is the first bit is positive,the following 8 bits is exp,the end is float point
    see 
    http://stevehollasch.com/cgindex/coding/ieeefloat.html
      

  3.   

    3.1415e2转换为“3.1415e2”,3.1400转换为“3.1400”而不是“3.140000”,有办法实现吗?
    ----------------------------------
    是不是所有的PC机上的浮点数都占用32位内存空间?
      

  4.   

    这个没什么意义,计算内部是不会有 3.1415e2 这种表示的,到计算机内后都是二进制浮点格式了
    那么,你这个 3.1415e2 是从哪里来的呢?如果是从控制台输入,直接用字符串的格式接收就是了,如果是从文件中读入,同样用字符串格式读就行了,没必要转换
    不过要将普通的浮点数转换成科学计数形式,可以
    printf("%.xE", 25.2523); // x 控制小数位数
    sprintf(buffer, "%.xE", 25.2523); // buffer是字符缓冲区,x 控制小数位数
    手工做这些转换可以这样
        float ft = 1.0 / 3.0;    float tail = ft;
        int e = 0;
        char sign = '+';    if(tail < 0.0)
        {
            sign = '-';
            tail *= -1;
        }    while(tail > 10.0)
        {
            tail /= 10.0;
            ++e;
        }    while(tail < 1.0)
        {
            tail *= 10.0;
            --e;
        }    printf("%c%.6fE%d\n", (sign=='-'? sign: ''), tail, e);
      

  5.   

    BOOL CMyView::CBitFormat::GetBit(int nBit)
    {
    int nOffset = m_nOffset + nBit;
    int nByte, nByteOffset; nByte = nOffset >> 3;
    nByteOffset = nOffset & 0x07; if (!m_pBuffer)
    return FALSE; if ((m_pBuffer[nByte] << nByteOffset) & 0x80)
    return TRUE; return FALSE;
    }
      

  6.   

    上面依次 GetBit(0) ~ GetBit(31) 就可以了