最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

編程中的浮點(diǎn)數(shù)與二進(jìn)制

2021-06-15 09:36 作者:自由的加百利  | 我要投稿

先來看一段簡單的代碼

打印結(jié)果如下:


為什么會(huì)出現(xiàn)這種詭異的答案呢?

這還得從浮點(diǎn)數(shù)的二進(jìn)制表示方法說起


這年頭兒,連過馬路的老奶奶估計(jì)都知道,計(jì)算機(jī)是采用二進(jìn)制計(jì)數(shù)的

來,簡單的考你一下:請把數(shù)字15寫成二進(jìn)制的形式

相信你對整數(shù)的二進(jìn)制已經(jīng)比較熟悉

但如果我換成小數(shù)呢?3.14159265359該怎么表示?


其實(shí),如果不搞底層設(shè)計(jì),一般人還真的不太知道這個(gè)答案

但你只有理解小數(shù)在二進(jìn)制中是如何表示的

才能夠明白文章開頭的案例【為什么0.1+0.2不等于0.3?】


我們以小數(shù)0.1為例,看看它在底層是如何轉(zhuǎn)換為二進(jìn)制存儲(chǔ)的

下圖展示了計(jì)算的過程 ↓


整數(shù)部分豎著連起來就是轉(zhuǎn)換后的二進(jìn)制

整數(shù)部分豎著連起來就是轉(zhuǎn)換后的二進(jìn)制

寫出來大概是這樣:

可以看到,1001 的部分,是無限循環(huán)的

我們用二進(jìn)制的小數(shù)把它寫出來大概是這樣

它相當(dāng)于

會(huì)計(jì)算出一個(gè)近似值

你會(huì)發(fā)現(xiàn),它并不等于0.1

它只是一個(gè)近似值

所以,二進(jìn)制保留的位數(shù)越多,精度也就越高

早期的計(jì)算機(jī)其實(shí)是不能處理浮點(diǎn)數(shù)的

直到IEEE 754 標(biāo)準(zhǔn)出現(xiàn)后,計(jì)算機(jī)才能處理浮點(diǎn)數(shù)

根據(jù)IEEE 754 標(biāo)準(zhǔn),float類型,共4個(gè)字節(jié),32個(gè)bit位

其中【指數(shù)部分】占8位,【小數(shù)部分】占23位

那么?指數(shù)部分?和?小數(shù)部分?分別用來保存什么呢?

我們依然以 數(shù)字 0.1 為例,我們剛才已經(jīng)得到了它的二進(jìn)制

按照IEEE 754標(biāo)準(zhǔn),我們需要把它的小數(shù)點(diǎn),向右移動(dòng)

直到整數(shù)部分是1為止

最終變成


float小數(shù)部分只能保存23位

-4 就是?指數(shù)部分

1001......就是?小數(shù)部分

小數(shù)點(diǎn)的位置不是固定的,而是浮動(dòng)的,故名:浮點(diǎn)數(shù)


?

了解到這一點(diǎn),你就能夠接受更多看起來奇怪而有趣的現(xiàn)象

比如

f1還原為10進(jìn)制,結(jié)果為0.40000000596046450000

d1還原為10進(jìn)制,結(jié)果為0.40000000000000000000


關(guān)于二進(jìn)制的底層,還有很多問題,有待我們探索

多了解一點(diǎn),就少一些困惑


編程中的浮點(diǎn)數(shù)與二進(jìn)制的評論 (共 條)

分享到微博請遵守國家法律
樟树市| 闸北区| 泰宁县| 河间市| 海淀区| 石狮市| 江山市| 克东县| 靖宇县| 双峰县| 岳西县| 扎兰屯市| 余江县| 长岭县| 庆云县| 嵊州市| 娄烦县| 平泉县| 哈尔滨市| 林甸县| 民丰县| 梓潼县| 长岭县| 汶川县| 宁南县| 达孜县| 开远市| 金堂县| 常德市| 太原市| 玉屏| 武汉市| 图片| 迭部县| 新郑市| 夏河县| 通州市| 清新县| 磴口县| 曲麻莱县| 元阳县|