回覆列表
-
1 # 使用者3690266234678
-
2 # lanfengz3
浮點數是表示小數的一種方法。所謂浮點就是小數點的位置不固定,與此相反有定點數,即小數點的位置固定。整數可以看做是一種特殊的定點數,即小數點在末尾。8086/8088中沒有浮點數處理指令,不過從486起,CPU內建了浮點數處理器,可以執行浮點運算。一般的浮點數有點象科學計數法,包括符號位、指數部分和尾數部分。
浮點數是指小數點位置可以浮動的資料,通常以下式表示:
E次方
N = M·R
其中N為浮點數,M為尾數,E(為階碼也就是多少次方的意思),R為階的基數, R一般為2進位制(01),8...(01234567),16...(0123456789abcdef)
簡單說浮點數是指能夠精確到小數點以後的數值型別
我來解釋下為什麼IEEE標準中,8位階碼的偏置為127。1、8位移碼的取值範圍為0~255(00000000~11111111),但在浮點數的階碼中,00000000與11111111被保留用作特殊情況,所以階碼可用範圍只有1~254,總共有254個值。2、8位有符號數取值範圍為-128~+127(10000000~01111111),這裡的二進位制用補碼錶示,其中特別規定補碼10000000沒有原碼,為-128的補碼,總共有256個值。3、如果採用偏置128,在表達+127時會產生上溢(移碼11111111被保留),所以在階碼中偏置為(128-1),與此同時,在表達-127時會產生下溢(移碼00000000被保留),所以階碼中去掉-127與-128,取值範圍為-126~127,總共254個值。——————————————————————————————————————————另外我再補充一下對32位float型資料的取值範圍的研究:最高位為符號位;指數:共8個bit,佔據30~23位;底數:實際是佔用24個bit,由於其最高位始終為1,所以最高位省去不儲存,在儲存中只有23個bit,佔據22~0位;當22~0位全部置1時,底數取得最大值,接近於2。當22~0位全部置0時,底數取得最小值,為1。因此float型的取值範圍為: -2*2^127 ~ -1*2^(-126) 與 1*2^(-126) ~ 2*2^127轉化得: -3.4*10^38 ~ -1.2*10^(-38) 與 1.2*10^(-38) ~ 3.4*10^38