【原】浮點(diǎn)數(shù)的二進(jìn)制表示

          個(gè)人學(xué)習(xí)--計(jì)算機(jī)組成原理篇















          問(wèn)題:
          2009年12月1日



















          今天在網(wǎng)上看到-12.5轉(zhuǎn)化成32位二進(jìn)制浮點(diǎn)數(shù)為







          11000001 01001000 00000000 00000000







          哪位高人能分別給出具體具體的十進(jìn)制數(shù)轉(zhuǎn)化成二進(jìn)制浮點(diǎn)數(shù),







          還有二進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)化成十進(jìn)制數(shù)的過(guò)程。







          為了能更詳細(xì)請(qǐng)給出-1.997436, 2.025675這兩個(gè)數(shù)的具體轉(zhuǎn)換過(guò)程














































          答案:











          整數(shù)怎樣轉(zhuǎn)2進(jìn)制,小數(shù)怎樣轉(zhuǎn)2進(jìn)制就不說(shuō)了。















          12.5:







          1. 整數(shù)部分12,二進(jìn)制為1100; 小數(shù)部分0.5, 二進(jìn)制是.1,先把他們連起來(lái),從第一個(gè)1數(shù)起取24位(后面補(bǔ)0):







          1100.10000000000000000000







          這部分是有效數(shù)字。(把小數(shù)點(diǎn)前后兩部分連起來(lái)再取掉頭前的1,就是尾數(shù))







          2. 把小數(shù)點(diǎn)移到第一個(gè)1的后面,需要左移3位, 加上偏移量127:127+3=130,二進(jìn)制是10000010,這是階碼。







          3. -12.5是負(fù)數(shù),所以符號(hào)位是1。把符號(hào)位,階碼和尾數(shù)連起來(lái)。注意,尾數(shù)的第一位總是1,所以規(guī)定不存這一位的1,只取后23位:







          1 10000010 10010000000000000000000







          把這32位按8位一節(jié)整理一下,得:







          11000001 01001000 00000000 00000000







          就是十六進(jìn)制的 C1480000.















          2.025675







          1. 整數(shù)部分2,二進(jìn)制為10; 小數(shù)部分0.025675, 二進(jìn)制是.0000011010010010101001,先把他們連起來(lái),從第一個(gè)1數(shù)起取24位(后面補(bǔ)0):







          10.0000011010010010101001







          這部分是有效數(shù)字。把小數(shù)點(diǎn)前后兩部分連起來(lái)再取掉頭前的1,就是尾數(shù): 00000011010010010101001







          2. 把小數(shù)點(diǎn)移到第一個(gè)1的后面,左移了1位, 加上偏移量127:127+1=128,二進(jìn)制是10000000,這是階碼。







          3. 2.025675是正數(shù),所以符號(hào)位是0。把符號(hào)位,階碼和尾數(shù)連起來(lái):







          0 10000000 00000011010010010101001







          把這32位按8位一節(jié)整理一下,得:







          01000000 00000001 10100100 10101001







          就是十六進(jìn)制的 4001A4A9.















          -1.99744







          還需要詳細(xì)說(shuō)嗎?















          如果只有小數(shù)部分,那么需要右移小數(shù)點(diǎn). 比如右移3位才能放到第一個(gè)1的后面, 階碼就是127-3=124.















          補(bǔ)充一個(gè)浮點(diǎn)二進(jìn)制數(shù)手工轉(zhuǎn)換成十進(jìn)制數(shù)的例子:







          假設(shè)浮點(diǎn)二進(jìn)制數(shù)是 1011 1101 0100 0000 0000 0000 0000 0000







          按1,8,23位分成三段:







          1 01111010 10000000000000000000000







          最后一段是尾數(shù)。前面加上"1.", 就是 1.10000000000000000000000







          下面確定小數(shù)點(diǎn)位置。階碼是01111010,加上00000101才是01111111(127),







          所以他減去127的偏移量得-5。(或者化成十進(jìn)制得122,122-127=-5)。







          因此尾數(shù)1.10(后面的0不寫了)是小數(shù)點(diǎn)右移5位的結(jié)果。要復(fù)原它就要左移5位小數(shù)點(diǎn),得0.0000110, 即十進(jìn)制的0.046875







          最后是符號(hào):1代表負(fù)數(shù),所以最后的結(jié)果是 -0.046875















          還要注意其他機(jī)器的浮點(diǎn)數(shù)表示方法可能與此不同. 不能任意移植






















          PS:最近對(duì)計(jì)算機(jī)組成原理比較感興趣,學(xué)習(xí)了一下基礎(chǔ)的計(jì)算機(jī)數(shù)據(jù)表示方法,感覺(jué)受益匪淺。







          posted on 2009-12-01 15:12 龍櫻 閱讀(1304) 評(píng)論(0)  編輯  收藏 所屬分類: 非主流技術(shù)類

          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(13)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(1)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 濉溪县| 密云县| 固镇县| 镇远县| 长顺县| 阜新市| 仁化县| 左云县| 隆安县| 玛多县| 颍上县| 凯里市| 聂荣县| 宁河县| 尤溪县| 吉林省| 霍邱县| 广宗县| 呼伦贝尔市| 平谷区| 固镇县| 黄浦区| 盐城市| 涿鹿县| 青河县| 平谷区| 小金县| 绥化市| 维西| 大足县| 肥西县| 施甸县| 黄石市| 阿坝| 锦屏县| 长武县| 紫云| 东乌珠穆沁旗| 桐梓县| 陆良县| 盐亭县|