2013-04-23 317 views
0

我有一個家庭作業如下:轉換單精度浮點到半精度MIPS

「實現半精度浮點在MIPS彙編語言點加提示用戶 輸入兩個浮點數(十進制)數字和計算並顯示總和。

在半精度格式,16位被用於表示一個浮點數。指數字段是寬5個比特,而有效位字段具有10位。

你將需要轉換單精度浮點數到半精度浮點數nu然後執行你的計算。「

我該如何從MIPS中的單精度浮點轉換爲半精度浮點?

回答

2

到IEEE-754的32位二進制浮點對象轉換爲16位:

  • 獨立符號,指數和尾數字段。
  • 如果這個數字是一個NaN(指數是全部一位,而且有效位域不爲零),返回一個NaN。 (使用相同的符號位,將指數字段設置爲全1,將新有效位的高位設置爲舊有效位的高位[它通常用於指示信號/靜音],並保留其他位只要新的有效位數不爲零)
  • 如果指數字段不是全零,則將有效位數字段添加到有效位數字段。如果指數字段全部爲零,則向其添加1。 (這一步將標準化次正常數字。)
  • 從指數中減去127以消除32位格式的偏差,並添加15以添加16位格式的偏差。
  • 如果指數字段小於-11,則返回零,其符號與輸入相同。
  • 如果指數字段小於1:將一個臨時值設置爲有效位向左移位的位數等於1減去指數字段。將有效位右移位數加13,如果臨時值超過2 ,則在有效位字段中加1(四捨五入)。如果該加法不將有效位數增加到2,則將指數設置爲零,並返回由符號位,零指數和有效位形成的次正常數(或零)。如果有效位數增加到2 ,則返回由符號位,一個指數字段和一個零有效位形成的數字。
  • 如果有效數的低13位超過2 或它們等於2 和下一個較高位爲1,添加2 到有效數。將有效位右移13位。如果它不小於2 ,請將指數加1並將有效位右移一位。
  • 如果指數字段大於30,則返回無窮大,其符號與輸入相同。
  • 否則,返回由有效位的符號位,指數和低位組成的正常數。

上面寫的是即興;它需要檢查。此外,它不包含信號異常的注意事項。