簡體   English   中英

使用 IEEE 754 浮點到二進制

[英]Floating point to binary using IEEE 754

您好,我需要使用 IEEE 格式存儲 0.2730。 現在我所做的是將 sing 設置為 0,因為這個數字是正數。 現在我想,既然點之前是 0,那么我不必對它進行任何轉換,因為二進制中的 0 它只是 0,所以指數最終會是 0,我只需要將 127 轉換為二進制。 當我尋找尾數時,我試圖做模式,當我將小數部分乘以 2 並在我找不到模式也沒有達到 0 之前取出數字所以我所做的只是乘以直到找到 23 位. 現在,當我查看實際值時,它說指數應該是 125,而這個數字實際上是 0 0111 0001 0111 1000 1101 0101 000。現在我不知道為什么我必須從指數中減去 2,因為我認為我在進行乘以 2 模式時,不必移動點或何時停止。 我留下了我工作的照片以防萬一。 在此先感謝您,希望您一切順利

在此處輸入圖像描述

IEEE-754 binary32 編碼

0.2730 的符號為正,因此 IEEE-754 binary32 格式的符號位將為零。

接下來,用 2 的冪表示具有顯式縮放的數字: 0.2730 = 0.2730 • 2 0 在此,我們將“•” (0.2730) 之前的部分稱為有效數字 ,而 2 的冪是指數

然后,調整此表示以使有效數字至少為 1 且小於 2。允許的調整是將指數調整為增量 1,並相應地將有效數字乘以或除以 2:0.2730 • 2 0 = 0.5460 • 2 -1 = = 1.0920 • 2 -2

這稱為規范化形式。 這種形式的指數 -2 用於編碼。 為了在指數位中對其進行編碼,我們添加了格式的固定偏差 127,並將結果寫入 8 位二進制。 −2 + 127 = 125,二進制的 125 是 01111101。

接下來,將二進制的有效數字寫入至少 24 位:1.0920 = 1.00010111100011010100111 11101111100111011… 2 粗體顯示前 24 位數字。 我們只能使用 IEEE-754 binary32 格式的 24 位數字,並且我們看到剩余部分在第 24數字的一半以上,因此我們將四舍五入,產生 1.00010111100011010101000 2 那是我們二進制的有效數字。 (有關執行此操作的信息,請參閱下面的“十進制到二進制”。)

為了對有效數字進行編碼,我們使用“.”后面的 23 位數字。 (已知前導數字是 1,因為我們對數字進行了規范化以使其如此,所以它不需要包含在主要對有效數字進行編碼的位中。)這些位是 00010111100011010101000。

然后我們將符號、指數和有效位放在一起:0 01111101 00010111100011010101000。

十進制轉二進制

要將十進制數字 1.0920 轉換為二進制:

  • 寫下開頭的“1”並將其刪除,給出.0920。 乘以 2,得到 0.1840。 還要寫“。” 因為我們從這一點開始。
  • 寫入前導“0”並將其刪除,給出.1840。 乘以 2,得到 0.3680。
  • 寫入前導“0”並將其刪除,給出.3680。 乘以 2,得到 0.7360。
  • 寫入前導“0”並將其刪除,給出.7360。 乘以 2,得到 1.4720。
  • 寫下開頭的“1”並將其刪除,給出.4720。 乘以 2,得到 0.9440。

根據需要繼續。

很難看清圖片中的內容,但這里是數字0.2730的二進制布局,作為單精度和雙精度 IEEE-754 表示。 希望您可以使用它來仔細檢查您的答案。 如果您不匹配,請隨時提出更具體的問題。

這是0.2730的單精度(32 位)IEEE-754 表示:

                  3  2          1         0
                  1 09876543 21098765432109876543210
                  S ---E8--- ----------F23----------
          Binary: 0 01111101 00010111100011010101000
             Hex: 3E8B C6A8
       Precision: SP
            Sign: Positive
        Exponent: -2 (Stored: 125, Bias: 127)
       Hex-float: +0x1.178d5p-2
           Value: +0.273 (NORMAL)

這也是一樣的,這次是雙精度(64 位)IEEE754 表示:

                  6    5          4         3         2         1         0
                  3 21098765432 1098765432109876543210987654321098765432109876543210
                  S ----E11---- ------------------------F52-------------------------
          Binary: 0 01111111101 0001011110001101010011111101111100111011011001000110
             Hex: 3FD1 78D4 FDF3 B646
       Precision: DP
            Sign: Positive
        Exponent: -2 (Stored: 1021, Bias: 1023)
       Hex-float: +0x1.178d4fdf3b646p-2
           Value: +0.273 (NORMAL)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM