二進制小數(shù)與浮點數(shù)的存儲

小數(shù)二進制的轉(zhuǎn)換和浮點數(shù)的存儲是兩個不太相關(guān)的內(nèi)容泄私,所以本文分兩個主題分別記錄午绳。

進制轉(zhuǎn)換

十進制整數(shù)轉(zhuǎn)二進制

除二取余法嗜憔,余數(shù)倒排杜跷。
原理來源于:
十進制:123=1*10^{2}+2*10^{1}+3*10^{0}
二進制:1011=1*2^{3}+0*2^{2}+1*2^{1}+1*2^{0} = 11
反向求解的時候就是除2(基數(shù))取余涣旨。

11 ÷ 2 = 5 余 1
5 ÷ 2 = 2 余 1
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1
得到二進制:1011

十進制小數(shù)轉(zhuǎn)二進制

乘二取整歪架。
原理來源于:
十進制:0.123=1*10^{-1}+2*10^{-2}+3*10^{-3}
二進制:0.1011=1*2^{-1}+0*2^{-2}+1*2^{-3}+1*2^{-4} = 0.6825
反向求解的時候就是乘2(基數(shù))取整:

0.6825 * 2 = 1.375  拿走整數(shù)部分1,剩0.375
0.375 * 2 = 0.75  拿走整數(shù)部分0霹陡,剩0.75
0.75 * 2 = 1.5 拿走整數(shù)部分1和蚪,剩0.5
0.5 * 2 = 1 拿走整數(shù)部分1,剩0烹棉,結(jié)束
得到二進制:0.1011

通過上面的運算可以知道:11.6825轉(zhuǎn)成二進制是:1011.1011
另外一個規(guī)律:小數(shù)尾數(shù)為5(x.5攒霹、x.25、x.xxxxx5)才能用完整的二進制表示浆洗,不然一直乘2小數(shù)部分永遠不能為0催束。
快速運算:

0.1(二進制)=0.5(十進制)
0.01(二進制)=0.25(十進制)
0.001(二進制)=0.125(十進制)
……

小數(shù)存儲

我們假設(shè),小數(shù)點存儲在中間(定點數(shù))伏社,假設(shè)用8bit來存儲小數(shù):
1011 1011就等于1011.1011抠刺。用16bit來存儲小數(shù):0000 1011 1011 0000就等于1011.1011。
以上只是我們的假設(shè)摘昌,為了統(tǒng)一速妖,現(xiàn)在計算機都采用IEEE 754的標(biāo)準(zhǔn)來存儲小數(shù)(浮點數(shù))。有單精度(32bit)和雙精度(64bit)兩種聪黎。

image.png

統(tǒng)一公式:V=(-1)^s*2^{E}*M
其中s為符號位罕容,E為階碼,M為尾數(shù)。
s為所見即所得锦秒,0正數(shù)露泊,1負數(shù)。
E為移碼表示脂崔,移Bias=2^{N-1}-1滤淳,相當(dāng)于加上2^{N-1}-1,Bias稱偏移量砌左。
M為尾數(shù)脖咐,隱藏最高位1,相當(dāng)于計算尾數(shù)時汇歹,要加上1屁擅。

以0.4375為例,因為M尾數(shù)最高位要為1产弹,也就是我們要想辦法讓0.4375表示成1.xxx * 2^{E}的形式:0.4375 = 1.75 * 2^{-2}
用單精度表示派歌,偏移量為2^ {8-1} -1 = 127
0.4375 = (-1)^{0} * 2^{-2+127} * 1.75 = 2^{125} * 1.75
現(xiàn)在的任務(wù)變成了將125和1.75(需要隱藏高位1,變成0.75)轉(zhuǎn)換成二進制:
125 = 0111 1101(8位)痰哨、0.75 = 1100 0000 0000 0000 000(23位)
所以0.4375的浮點數(shù)表示就是:0011 11110 1110 0000 0000 0000 0000 0000

image.png

在線轉(zhuǎn)換網(wǎng)址

同理胶果,將0011 11110 1110 0000 0000 0000 0000 0000 轉(zhuǎn)換成小數(shù)就是:

階數(shù):0111 1101 = 125,實際 125 - 127(偏移量) = -2
尾數(shù):1100 0000 0000 0000 000 = 0.11(二進制) = 0.5+0.25=0.75(十進制)
尾數(shù)補隱藏位1:1+0.75=1.75

原小數(shù):-1^{0} * 2^{-2} * 1.75 = 0.4375

雙精度浮點數(shù)的偏移量:2^{11-1} -1 =1023

利用java轉(zhuǎn)換

long l = Double.doubleToLongBits(0.4375);
System.out.println(l);
// 11111111011100000000000000000000000000000000000000000000000000
System.out.println(Long.toBinaryString(l));

Long aLong = Long.valueOf("11111111011100000000000000000000000000000000000000000000000000", 2);
double v = Double.longBitsToDouble(aLong);
// 0.4375
System.out.println(v);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斤斧,一起剝皮案震驚了整個濱河市早抠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撬讽,老刑警劉巖蕊连,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異游昼,居然都是意外死亡甘苍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門烘豌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來载庭,“玉大人宣肚,你說我怎么就攤上這事苦始∈Ⅵ” “怎么了僧界?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長测垛。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么鸯绿? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上瓶蝴,老公的妹妹穿的比我還像新娘毒返。我一直安慰自己,他們只是感情好舷手,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布拧簸。 她就那樣靜靜地躺著,像睡著了一般男窟。 火紅的嫁衣襯著肌膚如雪盆赤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天歉眷,我揣著相機與錄音牺六,去河邊找鬼。 笑死汗捡,一個胖子當(dāng)著我的面吹牛淑际,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扇住,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼春缕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了艘蹋?” 一聲冷哼從身側(cè)響起锄贼,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎簿训,沒想到半個月后咱娶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡强品,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年膘侮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片的榛。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡琼了,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夫晌,到底是詐尸還是另有隱情雕薪,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布晓淀,位于F島的核電站所袁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凶掰。R本人自食惡果不足惜燥爷,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一蜈亩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧前翎,春花似錦稚配、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至立宜,卻和暖如春冒萄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赘理。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工宦言, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人商模。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓奠旺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親施流。 傳聞我的和親對象是個殘疾皇子响疚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容