關於IEE754浮點數

2022-07-26 11:18:15 字數 2054 閱讀 6795

1.浮點數:

是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由乙個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法

浮點數分為float和double,分別佔4,8個位元組,即32,64位. 

2.為什麼計算機中的小數被稱作浮點數?

(問題與答案均從知乎中摘錄而來,可以幫助像我這樣的小白理解浮點數的概念)

小數點在數制中代表一種對齊方式,比如說你要比較1000和200哪個比較大你應該怎麼做呢?你必須把他們右對齊:

1000

200

然後發現1比0(前面補零)大,所以1000比較大。那麼如果是比較1000和200.01呢?這時候就不是右對齊了,而是對應位對齊,也就是小數點對齊:

1000

200.01

小數點位置在進製表示中是至關重要的,位置差一位整體就要差進製倍(十進位制就是十倍)。在計算機中也是這樣,雖然計算機使用二進位制,但在處理非整數時,也需要考慮小數點位置的問題,無法對齊小數點就無法做加法、減法比較這樣的操作。我們說小數點位置,永遠是說相對於我們儲存的數字來說的,比如說我們儲存了01001001,然後小數點在第三位之後,也就是010.01001了。

在計算機中處理小數點位置有浮點和定點兩種,定點就是小數點永遠在固定的位置上,比如說我們約定一種32位無符號定點數,它的小數點永遠在第5位後面,這樣最大能表示的數就是11111.111111111111111111111111111,它是32 - 2^-27,最小非零數是2^-27。定點數是提前對齊好的小數,整數是一種特殊情況,小數點永遠在最後一位之後。

定點數的優點是很簡單,大部分運算實現起來和整數一樣或者略有變化,但是缺點則是表示範圍,比如我們剛才的例子中,最大只能表示32;而且在表示很小的數的時候,大部分位都是0,精度很差,不能充分運用儲存單元。浮點數就是設計來克服這個缺點的,它相當於乙個定點數加上乙個階碼,階碼表示將這個定點數的小數點移動若干位。由於可以用階碼移動小數點,因此稱為浮點數。

3.iee 745  浮點數

ieee二進位制浮點數算術標準(ieee 754)是20世紀80年代以來最廣泛使用的浮點數運算標準,為許多cpu與浮點運算器所採用。這個標準定義了表示浮點數的格式(包括負零-0)與反常值(denormal number)),一些特殊數值(無窮(inf)與非數值(nan)),以及這些數值的「浮點數運算子」;它也指明了四種數值捨入規則和五種例外狀況(包括例外發生的時機與處理方式)。

ieee 754規定了四種表示浮點數值的方式:單精確度(32位)、雙精確度(64位)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位實現)。只有32位模式有強制要求,其他都是選擇性的。大部分程式語言都有提供ieee浮點數格式與算術,但有些將其列為非必需的。例如,ieee 754問世之前就有的c語言,有包括ieee算術,但不算作強制要求(c語言的float通常是指ieee單精確度,而double是指雙精確度)。

4.小數單精度轉化

(鬼知道我翻了多久資料才搞明白)

首先,將小數化為二進位制數,具體方法如下:整數部分除二取餘即可,小數部分單獨取出,乘二取整數部分,當整數部分為1時,再次取小數部分乘二,直到最後小數部分為0即可

如:5.75

整數部分5化為二進位制為101,小數部分0.75進行二級制轉化時,0.75*2=1.5,取整數部分1,接著用小數部分0.5*2=1.0,取整數部分1,由於此時小數部分已為0,所以操作結束,5.75的二進位制為101.11。

接著,將二進位制規格化

將小數點移到第一位和第二位之間,101.11變為1.01 11,需要移動兩位,所以表示為1.01 11*2^2,(即e=2)

符號位(s):0

階碼(e):00000010(2的二進位制,用0在前填滿8位)

尾數(m):0111

5.將5.75,161.875,-0.0234375進行單精度浮點數轉化

5.75    0 1.01 11*2^2

161.875  0  1.100001 111*2^7

-0.0234375     1  1.10000000*2^-6

關於浮點數

oi acm中經常要用到小數來解決問題 概率 計算幾何等 但是小數在計算機中的儲存方式是浮點數而不是我們在作數 算中的數,有精度的限制。以下以gun c 為準,其他語言 或編譯器 也差不了多少。本文競賽向。一 基礎篇 1 一般浮點數使用double,範圍為大概為 10 308 10 308,有效精度...

單精度浮點數(IEEE754)

單精度浮點數佔據4個位元組,4個位元組的分配如下 a 第一位為符號位,0表示正,1表示負 b 第2 9位為階碼,採用移碼表示 c 第10 32位為尾數,採用原碼表示。1 給定32位串,如何轉換成十進位制數 假設記憶體中存在32位串 cd cc 08 41。因為intel cpu採用little en...

IEEE754浮點數精度轉換

最近在利用串列埠讀取溫度採集模組上面的資料時發現返回過來的資料是16進製制的ieee754型別,很顯然這不是我們想要看到的,因此我們必須對他進行解析 因為我用的是j a,所以首先翻了相關文件,發現還真提供的有 float.intbitstofloat hex 當然自己也可以手寫乙個,這時我們就需要了...