float存储方式编程验证

取出float在内存中的编码:

void printFloatAsBinary(float f)
{
// 二进制的位数
const int bits = sizeof(f) * 8;

// 将float类型的内存搬到int中,这样才可以使用位操作符按位输出
int ff = *(int*)&f;

// n表示二进制的index,1指向第一位
int n = 0;
for(int i = bits-1; i>=0; --i)
{
printf("%d", ( (ff>>i) & 0x01 ) );

//(ff>>i) & 0x01)是ff右移i位 再同0x01做与运算

//dat&0x01就是取dat的最低位

//如果dat=0x09 dat=0000 1001 dat&0x01=1

// 如果dat=0x08 dat=0000 1000 dat&0x01=0

if(++n % 8 == 0) printf(" ");
}
}

float f = -12.5f;
printFloatAsBinary(f);

原文地址:https://www.cnblogs.com/sunrunzhi/p/3640528.html