2012-10-12 48 views
0

我想將浮點數轉換爲二進制字符串。我注意到很多教程都將浮動轉換爲所謂的「二進制浮動」。例如,數字8.5是二進制浮點數1000.1將浮點數轉換爲二進制C

這是通過使用modf函數將尾數除以使整數部分和小數部分爲兩個單獨的整數而找到的。然後使用位操作或僅使用2除(用於十進制整數部分)來打印這兩個整數的二進制表示。

1000.1是不是我想要的。我想要實際的二進制字符串表示。

01000001 00001000 00000000 00000000 

我不能保證,當使用modf函數,我的浮動將能夠翻譯成兩個整數。

我目前有一個函數可以將整數轉換成二進制字符串。我想知道這樣的事情是否存在浮動。如果是這樣,請指向正確的方向。謝謝。

回答

2

獲取浮動的地址,它(與相同sizeof或其他適當的整型)強制轉換爲int*,然後使用現有的功能:

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

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

哦,你是正確的工作。所以他們都是4個字節......我以前直接插入到我的函數中,並且遇到錯誤。所以位操作不能直接在浮動上執行? –