iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Software Development

RISC-V 與處理器之架構學習及應用系列 第 12

[Day12] 從定點到浮點的位元表示與數字範圍

  • 分享至 

  • xImage
  •  

考慮一個具有 1 個符號位、5 個整數位和 10 個小數位的 16 位元 定點數系統。10 個小數位繼續從整數位停止的地方接續。例如,位元表示 0b0 01101 1010000000 表示十進制為 13.625。

在這個問題中,我們將此定點系統與遵守所有 IEEE-754 約定(包括非正常數、NaN 等)的 16 位浮點系統進行比較,具有 5 位指數和指數偏差 -15。


將 -22.375 以十六進位使用上述 16 位定點系統表示。

C01 = 0xD980

符號位為 0b1,因為該數為負數。
整數位是透過將 22 轉換為無符號二進位來獲得的,給我們 0b10110。
小數位是將 0.375 轉換為無符號二進位得到的;結果為 0b0.0110000000,並且小數部分為 0b0110000000。
總共有 0b1101100110000000,相當於十六進位的 0xD980。


將 -22.375 以十六進位使用上述 16 位 浮點數系統表示。

C02 = 0xCD98

本題的浮點數系統共有 16 位,其中包括 1 個符號位和 5 個指數位。這讓尾數有 10 位。

首先,將 22.375 轉換為二進位:0b1 0110.011。

然後,移動二進位點來建立 0b1.MM MMMM MMMM × (2^E) 的形式。

這給我們 0b1.01 1001 1000 × (2^4)。

從這個形式可以直接讀取尾數位:0b01 1001 1000。記得要省略二進位點左側的隱含 1。

指數是 -4,我們可以將其轉換為偏置表示法,方法是減去偏置:4 - (-15) = 19。在無符號 5 位二進位中,這是 0b10011。

符號位是 0b1,因為該數是負數。

總共,我們有 0b1 10011 01 1001 1000,即 0xCD98 在十六進位表示。


在區間 [16, 64) (包括 16,不包括 64)中,可以由上述 定點數系統表示的數字有多少?

C03 = 2^14

16 在定點數系統中的表示為 0b10000.0000000000。該系統中可表示的最大數字為 0b11111.1111111111,即 2^5 - 2^{-10},接近於 32。

在這兩個數字之間,我們可以選擇每一位元,除了最重要的整數位可以是 0 或 1。這讓我們有 4 個整數位和 10 個小數位,這些位元可以是 0 或 1。每個位元組合代表不同的數字,因此我們總共有 2^14 個可表示的數字。


上一篇
[Day11] 檔案與目錄的創建與資料保護
下一篇
[Day13] 遞迴與向量加法
系列文
RISC-V 與處理器之架構學習及應用21
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言