此代码转载自 http://tieba.baidu.com/f?kz=168653360 ,然后本人作了些小的改善。因感觉挺好玩,就转载过来。
void printfFloatBit(float f) //功能:从高位到低位依次输出f的32个二进制位
{
int i, j;
unsigned char byte = 0;//储存float的一个字节的值
char ch;
char *p;
p = (char *)(&f); //将f的地址以char形式赋予p
printf("%f: ", f);
for (i = sizeof(float) - 1; i >= 0; i--) //每循环一次将f从高到低产生一个字节
{
ch = *(p + i);
byte = ch;
for (j = 1; j <= 8; j++) //每循环一次将一个字节从高到低产生一个二进制位
{
if (byte >= 128)
{
printf("1");
}
else
{
printf("0");
}
byte <<= 1;
}
}
printf("\n");
}
int main()
{
float f1 = 5.75;
printfFloatBit(f1);
return 0;
}