c語言
Float的存盤方式
?浮點型存盤方式是根據IEEE(電子和電子協會) 754規定的,(-1)^S* M *2^E
符號位(Sign):S=0為正數,S=1為負數
指數位(Exponent):用于存盤科學計數法中的指數資料,并且采用移位存盤
尾數部分(Mantissa):1<= m >2

列:
float a = 5.5//的儲存方式
轉換2進制為101.1
符號s=0
尾數m=1.011
指數e(101.1—>1.001移了多少位)=2
M和E的存盤方式有不同
因為1<= M<2,每次都有1,為了精度更高舍棄它,拿出來在補回去
E是無符的,8位時候取值范圍0~255
??應為E可能是負數 列:0.5---->0.1(這個是二進制-1)==2^-1=2/1---->(-1) ^0 *1.0 *2^-1 ----->e=e+127儲存存進
所以IEEE規定E存盤時要加一個中間值8位的中間值為127
M=011------>自動補齊20個0
E=127+2=129------>轉換乘二進制放入記憶體
放入記憶體中的樣子

float取出
float取出的結果
1:E不為全0也不為全1:
取出 E-128=E
依舊以5.5為例子
E=129-128=2
M拿出來補1
M=1.011
(-1)^S*M *2^E------>者就是取出的結果
2:E為全0,1
如果全0的時候那么E存進去是多少8位的中間值是127 E+127=0那么E==-127
2^-127次方你自己算算這個數字
所以IEE給出為0
那么全1也同理得出,全1就表示他是無窮大(正負取符號位)
全0和全1不就是微積分中極限嗎哈哈哈哈
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272881.html
標籤:其他
上一篇:分布式架構淺談
