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