關於IEEE754中,一般教材提到階碼都是用移碼表示,計算規則卻是偏置值+階數。
舉個栗子:
關於移碼的一個問題,有點糊塗了
比如說IEEE 754的浮點數表示,在32位浮點寄存器中,-8.25的16進制表示是多少。
我怎么算都是C1840000H,而答案是C1040000H。
這其中的差別就在階碼上。階碼是用移碼表示的。8.25也就是1000.01,就是1.00001乘以2^3.階碼是3.
問題來了。根據 移碼就是補碼符號位取反,3的補碼是0000011.所以移碼就是10000011;
可是答案里面說,移碼就是127+3=130.所以是10000010;
上面的問題來源於百度知道,也是昨天困擾我的一個問題,查閱了相關資料才知道原來這里的階碼並不是直接用移碼表示的,
准確來說是用階數的移碼減一表示的,所以3的移碼10000011B減一即:10000010B,數值上等於 偏置值+階數,即127+3=130(10000010B)。
這里的減一也從側面理解了為啥階碼的數值范圍是一般都是1~254 or 1~2046 。比如8位階碼的短浮點數,當階碼為1111 1111B
移碼數值為+127即2的128(127+1即實際的階數)次方已超過短浮點數可表示的范圍,算為無窮大。