浮點(diǎn)數(shù)在計(jì)算機(jī)中的表示方法 計(jì)算機(jī)組成原理——浮點(diǎn)數(shù)表示方法?
計(jì)算機(jī)組成原理——浮點(diǎn)數(shù)表示方法?為了表示浮點(diǎn)數(shù),數(shù)字分為兩部分:整數(shù)部分和小數(shù)部分。例如,浮點(diǎn)數(shù)14.234包含整數(shù)部分14和小數(shù)部分0.234。首先,將浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),步驟如下:1將整數(shù)部分
計(jì)算機(jī)組成原理——浮點(diǎn)數(shù)表示方法?
為了表示浮點(diǎn)數(shù),數(shù)字分為兩部分:整數(shù)部分和小數(shù)部分。例如,浮點(diǎn)數(shù)14.234包含整數(shù)部分14和小數(shù)部分0.234。首先,將浮點(diǎn)數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),步驟如下:1將整數(shù)部分轉(zhuǎn)換為二進(jìn)制,2將小數(shù)部分轉(zhuǎn)換為二進(jìn)制,3在兩部分之間加小數(shù)點(diǎn)。浮點(diǎn)數(shù)也可以規(guī)范化,浮點(diǎn)數(shù)可以用單精度和雙精度表示。規(guī)范化只存儲(chǔ)數(shù)字的三部分信息:符號(hào)、指令和尾數(shù)。例如,1000111.0101規(guī)格化是2^6*1.0001110101符號(hào)索引尾數(shù)規(guī)格化的單精度表示數(shù),如2^6*1.01000111001解:因?yàn)榉?hào)是正的,所以用0來(lái)表示。索引是6,在127表示法中,將127加到索引中得到133。二進(jìn)制表示為10000101。尾數(shù)是01000111001。當(dāng)您將數(shù)字?jǐn)?shù)增加到32時(shí),將得到01000111001000000000。請(qǐng)注意,不能忽略左邊的0,因?yàn)樗鞘M(jìn)制數(shù)。如果忽略0,則等于將該數(shù)字乘以2。這個(gè)數(shù)字以32位的形式存儲(chǔ)在內(nèi)存中。如下圖所示,符號(hào)索引的尾數(shù)為0 10000101 010001110010000000000
根據(jù)IEEE754標(biāo)準(zhǔn),float的格式為binary 32,double的格式為binary 64。浮點(diǎn)數(shù)的有效部分可以理解為一個(gè)定點(diǎn)數(shù),但指數(shù)部分有一個(gè)小數(shù)點(diǎn)偏移量(類似于科學(xué)的計(jì)數(shù)方法,但它只是二進(jìn)制的,故名浮點(diǎn)數(shù))。
我還沒有專門編寫從浮點(diǎn)到定點(diǎn)的轉(zhuǎn)換,但我不認(rèn)為它太復(fù)雜。其思想是:當(dāng)浮點(diǎn)數(shù)在固定點(diǎn)數(shù)的表示范圍內(nèi)時(shí),只需逐位運(yùn)算取出有效位數(shù)部分,然后按指數(shù)部分進(jìn)行移位。當(dāng)然,需要注意隱藏位、符號(hào)位、指數(shù)偏移和其他細(xì)節(jié)。幸運(yùn)的是,浮點(diǎn)定點(diǎn)是二進(jìn)制的,所以不需要轉(zhuǎn)換。
雙精度浮點(diǎn)格式
是一種原理,在二進(jìn)制中,數(shù)字的小數(shù)點(diǎn)可以通過(guò)乘以2的冪來(lái)改變。
浮點(diǎn)數(shù)的組成:順序符號(hào)和代碼符號(hào)尾數(shù)
在計(jì)算機(jī)中,浮點(diǎn)數(shù)的字長(zhǎng)通常是32位,其中7位是順序碼,1位是順序符號(hào),23位是尾數(shù),1位是數(shù)字符號(hào)
例如,用2個(gè)字節(jié)來(lái)表示一個(gè)浮點(diǎn)數(shù)(32寫起來(lái)很麻煩,所以2個(gè)字節(jié)是16位,哈哈,我希望能理解)(72.45x10^5)d被普通的二進(jìn)制數(shù)(11011101000110011001000)b
)代替之后,我們開始把它作為十進(jìn)制數(shù)的科學(xué)計(jì)數(shù)方法來(lái)寫,大約等于(0.1101110)BX(2^23)D
然后將(2^23)D的后半部分轉(zhuǎn)換成(2^10111)b
這樣在計(jì)算機(jī)中整數(shù)就變成了(0.1101110x2^10111)b
即000101101110110,其中前0是順序符號(hào),表示索引為正,第九個(gè)0表示尾數(shù)為正,是順序碼,后面是尾數(shù)。