首页
/
每日頭條
/
圖文
/
為什麼浮點數表示範圍更大
為什麼浮點數表示範圍更大
更新时间:2024-11-11 16:10:22

為什麼浮點數表示範圍更大?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
推荐阅读
十大忌諱你知道哪些(用詞這樣百無晉忌)
十大忌諱你知道哪些(用詞這樣百無晉忌)
     “有醋可吃糠,無醋肉不香。”   —— 探員手記   歡迎加入遣詞造句1班(太原群),今天我們将教授四字詞語,零基礎同學也可以參加,晉言晉語,包教包會。   不用再擔心鍵盤上的H鍵被磨平棱角,聊天隻會發紅紅火火恍恍惚惚。   本期為你準備了太原文化人都在用的四字詞語,它們都有哪些?适合在什麼場合用?   快跟上節奏解鎖新技能,把它們打包進肚吧。  ...
2024-11-11
2米高的女兒牆可以用砌體施工麼(砌體女兒牆的限制)
2米高的女兒牆可以用砌體施工麼(砌體女兒牆的限制)
  什麼情況下可采用磚做女兒牆?有何構造要求?      《非結構構件抗震設計規範》JGJ 339-2015第4.4.2條,女兒牆高度超過0.5m時、人流出入口、通道處或9度時,出屋面砌體女兒牆應設置構造柱與主體結構錨固,構造柱間距宜取2.0m~2.5m;高層建築的女兒牆,不得采用砌體女兒牆。      22G614-1具體規定   1、砌體女兒牆頂部應采用...
2024-11-11
卡地亞手表可以7天無理由退貨嗎(消費維權速報新表一次未戴卻被拒絕退貨)
卡地亞手表可以7天無理由退貨嗎(消費維權速報新表一次未戴卻被拒絕退貨)
  近日,消費者張女士向澎湃質量觀投訴平台(http://tousu.thepaper.cn)反映,2023年4月2日,她在卡地亞上海港彙恒隆精品店購買了一塊藍氣球腕表,花費45400元。次日,由于個人原因,張女士向銷售提出退貨退款。   張女士表示,自己沒有佩戴過該腕表,但退貨檢驗時,銷售告知表殼有劃痕,不符合退貨标準。當時她肉眼無法判斷是否有明顯劃痕,于...
2024-11-11
故宮中的養心殿是用來幹什麼的(故宮最精美的養心殿将閉門精修)
故宮中的養心殿是用來幹什麼的(故宮最精美的養心殿将閉門精修)
  故宮博物院院長單霁翔說:“養心殿是故宮最精美、工藝難度最高的建築,因為有了修複壽康宮、慈甯宮的經驗,這才敢啟動養心殿的修繕。”      圖為養心殿中慈禧垂簾聽政的地方。 文彙報首席記者 江勝信攝   ■文彙報首席記者 江勝信   故宮城牆暗藏險情,養心殿出現多處隐患,古建修繕人才卻青黃不接,怎麼辦?故宮文物總數超過180萬件套,因前殿後宮不可能大規模改...
2024-11-11
玉娆和甄母現實中是親生母女嗎(為什麼隻有三小姐玉娆赢得了最終的幸福)
玉娆和甄母現實中是親生母女嗎(為什麼隻有三小姐玉娆赢得了最終的幸福)
  #頭條創作挑戰賽##我在頭條搞創作##甄嬛傳#   甄家一共三個女兒,長女甄嬛為了妹妹的家族的前途進宮選秀,成為帝王無數個女人當中的一個。次女浣碧乃是見不得光的私生子,耍了陰狠手段讓自己如願嫁給了果郡王,奈何對方心裡完全沒有她。隻有第三個女兒玉娆,她拒絕了皇帝的心意,依照自己的本心嫁給了心愛的男人慎貝勒。   為什麼甄家三姝裡隻有最小的玉娆得到了幸...
2024-11-11
Copyright 2023-2024 - www.tftnews.com All Rights Reserved