《深入理解計(jì)算機(jī)系統(tǒng)(原書第2版)》第2章信息的表示和處理
練習(xí)題2.52 考慮下列基于IEEE浮點(diǎn)格式的7位浮點(diǎn)表示。兩個(gè)格式都沒有符號位——它們只能表示非負(fù)的數(shù)字。
1.格式A
有k=3個(gè)階碼位。階碼的偏置值是3。
有n=4個(gè)小數(shù)位。
2.格式B
有k=4個(gè)階碼位蹂安。階碼的偏置值是7椭迎。
有n=3個(gè)小數(shù)位。
下面給出了一些格式A表示的位模式田盈,你的任務(wù)是將它們轉(zhuǎn)換成格式B中最接近的值畜号。如果需要,請使用舍入到偶數(shù)的舍入原則允瞧。另外简软,給出由格式A和格式B表示的位模式對應(yīng)的數(shù)字的值。給出整數(shù)(例如17)或者小數(shù)(例如17/64)述暂。
101 1110的轉(zhuǎn)換
位101 1110對應(yīng)的數(shù)字的值為15/2痹升,這個(gè)很簡單,就不贅述了畦韭。這里講一下怎么將15/2轉(zhuǎn)為格式B疼蛾。
在這道習(xí)題之前,P74頁已經(jīng)有一個(gè)將整數(shù)值轉(zhuǎn)換成浮點(diǎn)形式的實(shí)例了:
在圖2-14中我們看到12 345具有二進(jìn)制表示[11000000111001]艺配。通過將二進(jìn)制小數(shù)點(diǎn)左移13位察郁,我們創(chuàng)建這個(gè)數(shù)的一個(gè)規(guī)格化表示,得到12345 = 1.10000001110012×2^13转唉。為了用IEEE單精度形式來編碼绳锅,我們丟棄開頭的1,并且在末尾增加10個(gè)0酝掩,來構(gòu)造小數(shù)字段,得到二進(jìn)制表示 [10000001110010000000000]眷柔。為了構(gòu)造階碼字段期虾,我們用13加上偏置量127,得到140驯嘱,其二進(jìn)制表示為[10001100]镶苞。加上符號位0,我們就得到二進(jìn)制的浮點(diǎn)表示[01000110010000001110010000000000]鞠评。
參考以上轉(zhuǎn)換流程茂蚓,對101 1110處理如下:
- 15具有二進(jìn)制表示[1111]
- 15/2的二進(jìn)制表示[111.1]
- 將二進(jìn)制小數(shù)點(diǎn)左移2位,得到1.111x2^2
- 丟棄開頭的1剃幌,構(gòu)造小數(shù)字段聋涨,得到二進(jìn)制表示[111]
- 構(gòu)造階碼字段,用2加上偏置量7负乡,得到9牍白,其二進(jìn)制表示為[1001]
- 最后得到格式B的浮點(diǎn)表示:[1001 111]
010 1001的轉(zhuǎn)換
010 1001的值為25/32,同樣的流程處理:
- 25具有二進(jìn)制表示[11001]
- 25/32的二進(jìn)制表示1.1001x2^-1
- 由于格式B只能表示3個(gè)小數(shù)位抖棘,舍入到偶數(shù)得到1.100x2^-1
- 丟棄開頭的1茂腥,構(gòu)造小數(shù)字段狸涌,得到二進(jìn)制表示[100]
- 構(gòu)造階碼字段,用-1加上偏置量7最岗,得到6帕胆,其二進(jìn)制表示為[0110]
- 最后得到格式B的浮點(diǎn)表示:[0110 100]
110 1111的轉(zhuǎn)換
110 1111的值為31/2,流程如下:
- 31具有二進(jìn)制表示[11111]
- 31/2的二進(jìn)制表示1.1111x2^3
- 由于格式B只能表示3個(gè)小數(shù)位般渡,1.11110做舍入到偶數(shù)為1.000x2
- 31/2的舍入后表示為1.000x2^4
- 丟棄開頭的1懒豹,構(gòu)造小數(shù)字段,得到二進(jìn)制表示[000]
- 構(gòu)造階碼字段诊杆,用4加上偏置量7歼捐,得到11,其二進(jìn)制表示為[1011]
- 最后得到格式B的浮點(diǎn)表示:[1011 000]
000 0001的轉(zhuǎn)換
000 0001的值為1/64
- 1/64具有二進(jìn)制表示1.000x2^-6
- 丟棄開頭的1晨汹,構(gòu)造小數(shù)字段豹储,得到二進(jìn)制表示[000]
- 構(gòu)造階碼字段,用-6加上偏置量7淘这,得到1剥扣,其二進(jìn)制表示為[0001]
- 最后得到格式B的浮點(diǎn)表示:[0001 000]