首页
/
每日頭條
/
圖文
/
為什麼浮點數表示範圍更大
為什麼浮點數表示範圍更大
更新时间:2025-07-03 14:30:36

為什麼浮點數表示範圍更大?1、什麼是浮點數?我們知道,數學中并沒有浮點數的概念,雖然小數看起來像浮點數,但從不這麼叫那為什麼計算機中不叫小數而叫浮點數呢?,我來為大家科普一下關于為什麼浮點數表示範圍更大?以下内容希望對你有幫助!

為什麼浮點數表示範圍更大(為什麼計算機中不叫小數而叫浮點數)1

為什麼浮點數表示範圍更大

1、什麼是浮點數?

我們知道,數學中并沒有浮點數的概念,雖然小數看起來像浮點數,但從不這麼叫。那為什麼計算機中不叫小數而叫浮點數呢?

因為資源的限制,數學中的小數無法直接在計算機中準确表示,為了更好地表示它,計算機科學家們發明了浮點數,這是對小數的近似表示。

2、IEEE754是什麼?

知道了浮點數的概念,但需要确定一套具體的表示、運算标準,其中最有名的就是IEEE754标準。

本文的讨論都基于IEEE754标準,這也是目前各大編程語言和硬件使用的标準。

3、浮點數的構成

浮點數是指用符号、尾數、基數和指數這四部分來表示的小數。

浮點數

根據浮點數的組成,因為是在計算機中表示浮點數,基數自然是2(不存儲),因此IEEE754浮點數隻關注符号、尾數和指數三部分。

浮點數在計算機中的存儲方式遵循IEEE754浮點數計數标準,可以表示為:

浮點數

類似于數學課本上所學的科學計數法表示方式:有效數字 指數位。

因此,隻要給出:符号(S)、階碼部分(E)、尾數部分(M)這三個信息,一個浮點數的表示就确定下來了。一般IEEE754浮點數有兩種類型,單精度浮點數(float)和雙精度浮點數(double),還有其他的,不常用。單精度浮點數使用4字節表示,雙精度浮點數使用8字節表示。所以float和double這兩種類型的浮點數在計算機中的存儲結構如下圖:

單精度浮點數

雙精度浮點數

符号位:0表示正數,1表示負數。

階碼部分(指數部分):對于float型浮點數,指數部分8位,我們知道,在十進制的科學計數法中,指數可以是負數,而計算機存儲浮點數的“指數部分”又是一個無符号的整數,因此,IEEE754标準規定,指數必須減去一個偏移值而得到真實的“指數值”。

偏移值的計算公式:2^(e-1) -1, e為階碼(指數)的位數,即為8,因此偏移值是2^(8-1) -1=127。

IEEE754規定,2^(e-1) -1的值是 0,小于這個值表示負數,大于這個值表示正數。因此,對于單精度浮點數而言, 2⁸⁻¹-1= 127 是 0;雙精度浮點數,2¹¹⁻¹-1 = 1023 是 0。

沒看懂?舉個栗子。

比如十進制數 0.15625,轉為二進制是 0.00101。為了讓第 1 位為 1,執行邏輯右移 3 位,尾數部分成為 1.01,因為右移了 3 位,所以指數部分是 -3。

根據 IEEE754 的定義,單精度浮點數情況下,-3 的實際值是 127 - 3 = 124。明白了嗎?127 表示 0,124 就表示 -3 了。

如果你還不理解,想想這個問題。

如果讓你用撲克牌(A ~ K,也就是 1 ~ 13)來表示支持負數的。怎麼辦?我們會選擇一個中間的數,比如 7 當做 0,因此 10 就是 3,4 就是 -3。現在理解了吧!

那為什麼單精度浮點數指數偏移值是127呢?

由于篇幅有限,這個留給大家自行查找資料。

尾數部分:浮點數的名稱由來在于小數點的位置是浮動的,比如 7.5x10、0.75 x10² 等表示法,值一樣,但小數點位置不一樣。在具體存儲時,需要固定一種形式,這叫做尾數的标準化。

IEEE754 規定,在二進制數中,通過移位,将小數點前面的值固定為 1。IEEE754 稱這種形式的浮點數為規範化浮點數。

因為IEEE754規定第 1 位永遠為 1,因此可以省略不存。

對于float型浮點數,尾數部分23位,換算成十進制就是2^23=8388608,所以十進制精度最多7位。

4、實例講解

講解之前先熟悉一下進制轉換:

二進制轉十進制

和整數轉換一樣,采用各位數值和位權相乘。比如:

(0.101)₂ = 1×2⁻¹ 0×2⁻² 1×2⁻³ = (0.625)₁₀

記住小數點後第一位是從 -1 開始即可。

十進制轉二進制

十進制整數轉二進制采用“除 2 取餘,逆序排列”法。例如十進制數 11 轉為二進制:

11/2=5 … 餘1

5/2=2 … 餘1

2/2=1 … 餘0

1/2=0 … 餘1 (1除以2不夠除,也就是商為0,餘數為1-0=1)

所以 (11)₁₀ 的二進制是 (1011)₂

但如果十進制是小數,轉為二進制小數如何做?

采用“乘 2 取整,順序排列”。讓小數一直乘2,小于1則用結果繼續乘,大于1則用結果減1繼續乘,等于1則結束。

例如十進制小數 0.625 轉為二進制小數:

0.625*2=1.25 … 取整數部分1

0.25*2=0.5 … 取整數部分0

0.5*2=1 … 取整數部分1

順序排列,所以 (0.625)₁₀ = (0.101)₂

如果一直不能等于1怎麼辦,會有什麼影響?

暫且擱置不講。

開始講解實例:例如 178.125

1、分别把浮點數的整數部分和小數部分轉換成2進制。

整數部分:

178/2=89 … 餘0

89/2=44 … 餘1

44/2=22 … 餘0

22/2=11 … 餘0

11/2=5 … 餘1

5/2=2 … 餘1

2/2=1 … 餘0

1/2=0 … 餘1

逆序排列,所以 (178)₁₀ 的二進制是 (10110010)₂

小數部分:

0.125*2=0.25 … 取整數部分0

0.25*2=0.5 … 取整數部分0

0.5*2=1 … 取整數部分1

順序排列,所以 (0.125)₁₀ = (0.001)₂

合起來即是:10110010.001

2、轉換成計算機存儲形式的二進制浮點數

把小數點移動到整數位隻有1,即為:1.0110010001*2^111,111是二進制,換算成十進制為7,由于左移了7位,所以是111。

3、階碼(指數)

階碼(指數)的計算公式:階數(指數) 偏移量(單精度浮點數指數偏移值是127)

即:111 01111111=10000110 (7 127=134)

4、尾數

小數點後面的數,即0110010001

小數點前面的1去哪裡了?由于尾數部分是規格化表示的,最高位總是1,所以省略不存。這樣尾數部分多了 1 位,提高了精度。

5、符号位

由于浮點數是正數,故為0(負數為1)

6、結果

最終結果為:

(178.125)₁₀ = (01000011001100100010000000000000)₂

單精度浮點數為32位,不夠32位後面補0。

0為什麼補在後面?

因為是尾數部分,補在後面比補在前面對實際數值影響比較小。

(178.125)₁₀ = (01000011001100100010000000000000)₂

2進制轉換16進制如下:

0100 4

0011 3

0011 3

0010 2

0010 2

0000 0

0000 0

0000 0

16進制為43322000

參考了網絡上有關浮點數轉換的文章,加上個人的理解,整理成文!

如有侵權,請告知!謝謝!

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
鄭州國際馬拉松公交改線(鄭州欲開通馬拉松)
鄭州國際馬拉松公交改線(鄭州欲開通馬拉松)
  大河報·大河客戶端記者 甯田甜 通訊員 羅鵬   核心提示丨   11月3日,鄭州國際馬拉松将鳴槍開跑,當天,鄭州市部分道路将實施臨時交通管制。鄭州公交總公司将于當天開通馬拉松公交專線,方便市民前往參賽觀賽。      哪些路段會實施臨時交通管制?   據了解,3日淩晨5:30至上午11:00,鄭州市中原東路(工人路至京廣路段)雙向、嵩山北路(建設西路至...
2025-07-03
河南各個縣名字難讀(能全部讀對名字的人)
河南各個縣名字難讀(能全部讀對名字的人)
  每一座城市,都有屬于它自身的特色。它們或者并不是那麼出名,但總有一些風土人情或自然風光令人向往。   但是,想去某個地方旅行,你可别首先就被該地的名字給難倒了。今天,小南就來跟大家聊聊河南境内,外地人非常容易讀錯名字的6座縣城。   一、武陟(zhì)縣  武陟位于河南省西北部,是焦作市的下轄縣。武陟縣曆史悠久,據資料記載,隋開皇十六年(即公元596年)...
2025-07-03
一分鐘了解衛生巾(關于衛生巾的一切)
一分鐘了解衛生巾(關于衛生巾的一切)
     寫在前面   衛生巾再次在網絡上引起熱議,這已經是今年第二次大規模讨論。對女性來說,這是一個平常不過卻又值得嚴肅讨論的話題。事關女性健康,對于衛生巾,不僅是每一位女性,女性身邊的他,更應該了解這一切。   近日,#散裝衛生巾#的話題不斷發酵,詞條被閱讀了13.7億次以上。      三無衛生巾、女性月經貧困、女性月經健康等各種問題都得到了廣泛讨論。...
2025-07-03
賤名怎麼起(诨名趣話)
賤名怎麼起(诨名趣話)
  诨名趣話原創 許文明      1   人民公社化時,隊為基礎,一個生産隊就是一個大家庭。那時,凡能頂得上勞力、半勞力的男女社員,年頭到年尾在一起勞動,朝聚暮散,同頂一片藍天,同享大自然的溫涼。社會體制把人們的命運熔鑄在了一起。   生産隊,這個特殊的團體,就像一個話劇團,一個歌劇團,一個雜技團,更像一個綜合的曲藝團。而每一個人民公社社員,幾乎全部都是演...
2025-07-03
南甯濕地公園考拉河(南甯那考河濕地公園)
南甯濕地公園考拉河(南甯那考河濕地公園)
  今天我們來介紹一個鹹魚是如何翻身的。那考河,原本是一條臭水溝,也沒有什麼人關注,畢竟哪裡都不缺臭水溝。一個臭水溝都是讓人避而不及的。但是突然有一天……它一改過去的容貌,變成了如今的濕地公園。   公園據說總投資超過11個億,使用了各種技術用來淨化水體。如今的那考河早已不是過去的臭水溝了,兩岸有梯田式遞進的淨水植物帶。還種植的大片的花田。      公園是...
2025-07-03
Copyright 2023-2025 - www.tftnews.com All Rights Reserved