为什么四个字节的float比八个字节的long表示范围大
?
①、float比long類型的存儲范圍大
long:8個字節(jié) 64bit
float:4個字節(jié) 32bit
float和long都是用二進制來進行存儲的
但是小數(shù)會先轉(zhuǎn)成二進制,然后進行處理存儲。
float的存儲是將4個字節(jié)32位劃分為3個部分來分別存儲正負(fù)號,小數(shù)部分和指數(shù)部分的:
符號位(1位:S):用來存儲正負(fù)符號,0表示正數(shù),1表示負(fù)數(shù)。
底數(shù)部分(8位:E):使用二進制數(shù)來確定小數(shù)的精度。
指數(shù)部分(23位:M):占用8bit的二進制數(shù),來確定數(shù)的范圍。
但是指數(shù)可正可負(fù),所以,IEEE規(guī)定,此處算出的次方必須減去127才是真正的指數(shù)。所以,float類型的指數(shù)可從-126~+127(-127和128作為特殊規(guī)定)。
底數(shù)部分實際是占用24bit的一個值,但是最高位始終為1,所以,最高位省去不存儲,在存儲中占23bit 科學(xué)計數(shù)法。
IEEE754標(biāo)準(zhǔn):
vlue = (-1)^S * M * 2^E-127
指數(shù)位最大值:8個1? ?11111111? 255
根據(jù)IEEE754標(biāo)準(zhǔn)計算得:? vlue = (-1)^S * M * 2^255-127? ?為?? vlue = (-1)^S * M * 2^128
那么float表示的范圍為? -2^127 ~ 2^127
換算成10進制為:-3.410^38 ~ +3.410^38;
long在內(nèi)存中占用8個字節(jié)64位,符號位占1位,數(shù)值表示范圍為-2^63~2^63-1。
顯然,float的存儲范圍比long的存儲范圍要大得多;
總結(jié)
以上是生活随笔為你收集整理的为什么四个字节的float比八个字节的long表示范围大的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cf 429 B. Godsend
- 下一篇: rhel5.6 sssd配置方法。