我來解釋下為什麼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
我來解釋下為什麼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