計組第二章浮點數運算難點part1

2021-10-08 02:11:48 字數 1937 閱讀 2474

⚠️難點 1. 無符號數的機器數

無符號數因為沒有符號,所以他的機器數就是他本身,

如1110 0000,那麼機器數也是1110 0000。

兩個無符號數做減法運算

x-y,那麼把y整體取反+1,變成y『和x相加

如果產生了進製,則進製直接捨棄。

有意思的是,當你printf輸出時,如果輸出為無符號數,則8位數字變成十進位制輸出。如果輸出為有符號數,則第八位數字為符號位。你說你存的時候是無符號數,計算機說,get了,把它八位存進去,不夠的我就補0,補成8位。後來你取它時,忘了它是有符號數還是無符號數,於是你認為是有符號數,於是他就把第八位當作符號位,給輸出。

因此有符號數的補碼(機器數)1100 1111=-49

無符號數的的機器數為1100 1111=207

而49+207=256=2^8

因此如果講有符號數轉換為無符號數,看看表示乙個數用幾位,如果是8位,即2^8-有符號數的真值的絕對值。

⚠️難點2.ieee754標準的浮點數

0b1100=1.12^3

單精度階碼e=1到256,e-127=-126到127

所以單精度最小正數:1.02^(-126)

最大正數1.1111 1111 1111 1111 1111 1112127=2127(2-2^-23)

若是0000 0000 0000…0000,那麼真值為0

若是0011 1111 1000 0000…0000,那麼真值為正無窮

⚠️注意,由於ieee的階碼一般用移碼表示,因為對於那八位階碼是無符號數,直接計算8位的二進位制數。

0b1000 0000 0100 0000 …0000

e=0,但e的取值應該是1-254沒有0,所以拿隱藏的1頂上去,即0.1*2-126=2-127

⚠️難點3

1111

222*2=2^4=16

1+2+4+8=15

即2^4-1

⚠️難點4

整數換算成浮點數,先把它換算成二進位制數

-68=1000100

⚠️難點5

ieee單精度浮點數對於尾數的取值為23位,但由於規定隱藏了乙個1,因此可以表示24位數,即最大是

1.11…1111(共24個1)

如果尾數超過了24位,就需要進製。

對於1.111…111(24個1)而言,進製,會使階碼加1,若階碼此時為111111110(在機器中的表示)(階碼不能全1,不能全0)

即為2^8-1-1-127=127

那麼捨棄24位以後的尾數進1,會引起溢位

因此我們可以看到加減法運算,尾數溢位不是真的溢位,而階碼溢位為真的溢位

⚠️難點6

float型變數在計算機中都被表示成ieee 754單精度格式

機器補碼浮點運算規則是階符2 階碼3 數符2 尾數9

運算的時候,需要將數符也參與運算

⚠️難點7

浮點數溢位問題

階碼上溢位,如ieee表示的浮點數中,階碼部分的值為11111111,如果數為正數,就是+∞,如果數為負數,就是-∞。這種為軟體故障

階碼下溢位,如ieee表示的浮點數中,階碼部分的值為000000,就是下溢位,則置值為0,不發生溢位故障

⚠️難點8

在ieee中,容易遺忘的一點,偏移量的設定,單精度為127,雙精度為1023

這個設定是這麼來的

8位表示階碼,那麼偏移量的值為2^7-1

⚠️難點9

原碼補碼反碼的表示範圍最好是要記清楚,這樣可以省下很多的時間

?小數 字長為n+1(表示包含符號)

原碼的表示範圍=反碼的表示範圍

-(1-2n)~1-2n

補碼-1~1-2^n

?整數 字長為n+1(包含符號)

原碼的表示範圍=反碼的表示範圍

-(2n-1)~2n-1

補碼-2n~2n-1

補碼為啥那麼反常呢,因為補碼的+0和-0都為0.000

計算機系統第二章 浮點數

二進位制小數 底權公式 1011.101 8 2 1 0.5 0.125 11.625 竅門 小數部分寫成分數,分母為2 k,k為小數字數,分子為小數部分二進位制的值,即101 5 8 0.625 觀察 小數點右移一位 乘2 小數點左移一位 除2 二進位制小數表示範圍 只能精確表示諸如x 2 k的數...

了解二進位制浮點數運算

所有的浮點數值計算都遵循ieee 754規範。ieee 754規定了四種表示浮點數值的方式 單精確度 32位 雙精確度 64位 延伸單精確度 43位以上,很少使用 與延伸雙精確度 79位元以上,通常以80位元實做 只有32位模式有強制要求,其他都是選擇性的。大部分程式語言都有提供ieee格式與算術,...

第二章 in ,like , 集合運算

in select from emp2 where job salesman or job president or job analyst select from emp2 where job in salesman president analyst not in 注意and的使用 select...