曾经看到的一篇文章:
#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串?????????
#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串?????????
各位大侠,能修改一下上面的程序也成,能给讲一下也成。
unsigned char x[4]为什么是4呢,我觉得应该是32
see
http://stevehollasch.com/cgindex/coding/ieeefloat.html
----------------------------------
是不是所有的PC机上的浮点数都占用32位内存空间?
那么,你这个 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);
{
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;
}