利用結構體觀察浮點數

2022-09-17 01:54:11 字數 657 閱讀 5217

利用結構體定義位域,可以觀察浮點數內部是如何儲存的,看**:

#includeusing

namespace

std;

struct

fp;int

main()

位域在本質上就是一種結構型別, 不過其成員是按二進位分配的。關於位域的幾點說明:

1、位域以二進位制位來儲存資料,可以在冒號左邊是位網域名稱,冒號右邊是位域的長度。

2、位域按定義順序儲存,記住是從儲存變數的個位,也就是最右邊開始的。

3、乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組。如乙個位元組所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。

4、來確定結構體型別的成員變數的值所佔的字位數,如果在實際應用中,該變數的值超出了在宣告它時所宣告的字位數,那麼溢位的部分將會丟失。

struct

bs

在這個位域定義中,a佔第一位元組的4位,後4位填0表示不使用,b從第二位元組開始,占用4位,c占用4位。

再看乙個**:

#includeusing

namespace

std;

struct

test;

intmain()

參考:

浮點數記憶體結構

最近比較閒,開始看一些以前的基礎書,回顧一下以前的知識點,這裡分享看 c 反彙編與逆向分析技術揭秘 的一些總結。float型別在向整形型別轉換時,會向零取整,損失精度。浮點數編碼方式 符號 指數 尾數 float 4位元組 32位 1位符號 8位指數 其餘尾數 double 8位元組 64位 一位符...

利用串列埠收發浮點數

以下介紹兩種方法,一種是利用指標,一種是利用聯合體,時間寶貴的看客可以直接跳到第二種方法。這裡只是討論資料傳送前和接收後的處理,不討論具體傳送過程。方法一 指標 uart串列埠有乙個缺點,就是傳送和接受是乙個位元組乙個位元組的接收,如果傳送的浮點數那可怎麼辦啊?有人會說,那就乙個位元組乙個位元組傳送...

浮點數 儲存

關鍵字 體系結構 ieee754 浮點數 儲存 main 如果不執行上面的 讓我們來直接判斷,輸出的結果會是什麼?而在你執行程式之後,結果卻很讓人詫異 123.456001。為什麼會是123.456001?有六位小數可以理解,最後那個1是為何?有很多人解釋說最後那個1是亂碼,隨機的。嘿嘿 其實無論你...