在C中将float转换为二进制

时间:2012-10-12 23:29:48

标签: c unix floating-point binary

我正在尝试将float转换为二进制字符串。我注意到很多教程都将浮动转换为所谓的“二进制浮动”。"例如,数字8.5位于二进制浮点1000.1中。

通过使用modf函数将尾数除以将整数部分和小数部分分成两个单独的整数来找到。然后使用位操作或仅使用除以2(对于十进制整数部分)打印这两个整数的二进制表示。

1000.1不是我想要的。我想要实际的二进制字符串表示。

01000001 00001000 00000000 00000000

我无法确定在使用modf函数时,我的浮点数将能够转换为两个整数。

我目前有将整数转换为二进制字符串的函数。我想知道浮子是否存在这样的东西。如果是这样,请指出我正确的方向。感谢。

1 个答案:

答案 0 :(得分:2)

获取浮动的地址,将其转换为int*(或具有相同sizeof的其他适当的整数类型),然后使用现有函数:

// assert(sizeof(float) == sizeof(int))

float f = 8.5;
convert_int_to_binary_string(*((int*)&f));