該怎麼計算過程,浮點數怎麼計算?要詳細過程

2022-10-02 15:07:16 字數 5442 閱讀 7070

1樓:匿名使用者

32×10=320

320>300

10套已經不夠了,所以13套肯定不夠

2樓:

不夠,每套童話32元,10套即需要320元大於300,13套肯定大於300

浮點數怎麼計算?要詳細過程··

3樓:蕭一歐

請耐心看完:

浮點數運算

假定有兩個浮點數 x=mx * 2ex , y=my * 2ey

(1)加減運算

實現x±y運算,需要如下五步:

1.1 對階操作,即比較兩個浮點數的階碼值的大小.求△e=ex-ey。

當其不等於零時,首先應使兩個數取相同的階碼值。其實現方法是,將原來階碼小的數的尾數右移|△e|位,其階碼值加上|△e|,即每右移一次尾數要使階碼加1,則該浮點數的值不變(但精度變差了)。尾數右移時,對原碼形式的尾數,符號位不參加移位,尾數高位補0;對補碼形式的尾數,符號位要參加右移並使自己保持不變。

為減少誤差,可用另外的線路,保留右移過程中丟掉的一到幾位的高位值,供以後舍入操作使用。

1.2 實現尾數的加(減)運算,對兩個完成對階後的浮點數執行求和(差)操作。

1.3 規格化處理,若得到的結果不滿足規格化規則,就必須把它變成規格化的數,規格化處理規則如下:

 當結果尾數的兩個符號位的值不同時,表明尾數運算結果溢位。此時應 使結果尾數右移一位,並使階碼的值加1,這被稱為向右規格化,簡稱右規。

 當尾數的運算結果不溢位,但最高數值位與符號位同值,表明不滿足規格化規則,此時應重複地使尾數左移、階減減1,直到出現在最高數值位上的值與符號位的值不同為止,這是向左規格化的操作,簡稱左規。

1.4 舍入操作。在執行對階或右規操作時,會使尾數低位上的一位或多位的數值被移掉,使數值的精度受到影響,可以把移掉的幾個高位的值儲存起來供舍入使用。

舍入的總的原則是要有舍有入,而且儘量使舍和入的機會均等,以防止誤差積累。常用的辦法有"0"舍"1"入法,即移掉的最高位為1時 則在尾數末位加1;為0時則捨去移掉的數值。該方案的最大誤差為2-(n+1)。

這樣做可能又使尾數溢位,此時就要再做一次右規。另一種方法 "置1"法,即右移時,丟掉移出的原低位上的值,並把結果的最低位置成1。該方案同樣有使結果尾數變大或變小兩種可能。

即舍入前尾數最低位已為0,使其變1,對正數而言,其值變大,等於最低位入了個1。若尾數最低位已為1,則再對其置1無實際效用,等於舍掉了丟失的尾數低位值。

1.5 判結果的正確性,即檢查階碼是否溢位。浮點數的溢位是以其階碼溢位表現出來的。

在加減運算真正結束前,要檢查是否產生了溢位,若階碼正常,加(減)運算正常結束;若階碼下溢,要置運算結果為浮點形式的機器零,若上溢,則置溢位標誌。

例15:某浮點數階碼6位(含1位符號位:階符),補碼錶示,尾數10位(含1位符號位,數符),補碼錶示, x=2010b * 0.

11011011b, y=2100b * (-0.10101100b),求 x+y

解: 由已知條件,ex=+010b,mx = 0.11011011 b,

ey=+100b,my =-0.10101100 b

對應補碼分別為

[ex]補=[+010b] 補=[+00010b] 補=000010b

[mx]補= [+0.11011011 b]補=[0.110110110 b] 補=0, 110110110 b

[ey]補=[+100b] 補=[+00100b] 補=000100b

[-ey]補=111100b

[my]補= [-0.10101100 b]補=[-0.101011000 b] 補=1, 010101000 b

浮點表示分別為:

數符   階碼    尾數數值

[x]浮 = 0   000010    110110110

[y]浮 = 1   000100    010101000

15_(1)對階

[△ e]補= [ex]補+[-ey]補= 00 00010b + 11 11100b = 11 11110b

△e =-00010b=-2,說明x的階碼小,應使mx右移兩位,ex加2

所以修正[x]浮 = 0 000100 001101101 10

15_(2)尾數求和

00 001101101 10

+ 11 010101000

11 100010101 10

15_(3)尾數規格化

尾數運算結果的符號位與最高數值位均為1,應執行左規處理,具體為:將尾數左移一位,符號位1位,結果為1000101011, 階碼減1變為000011。

15_(4)尾數移出位的舍入處理

左規已將對階移出的1位有效1移入,尾數不用做舍入處理。

15_(5)判溢位,寫結果

尾數已規格化且階碼符號位為00,沒有溢位,最終結果為

[ex+y]補=000011 ex+y=+00011b

[mx+y]補=1000101011 mx+y=-0.111010101b

所以,x+y = 2+0011b *(-0.111010101b)

(2)乘法運算

實現x*y運算,需要如下三步:

2.1 尾數相乘(兩個定點小數相乘)

2.2 階碼求和

2.3 結果左規、舍入

例16:某浮點數階碼3位(含1位符號位:階符),補碼錶示,尾數3位(含1位符號位,數符),原碼錶示, x=210b * 0.

1101b, y=2-01b * (-0.1011b),求 x*y

解:由已知條件,ex=+10b,mx = 0.1101 b,

ey=-01b,my =-0.1011 b

對應機器數分別為:

[ex]補=[+10b]補=010b

[mx]原= [+0.1101 b]原=0, 1101 b

[ey]補=[-01b]補=111b

[my]原= [-0.1011b]原=1, 1011b

機內浮點表示分別為:

數符   階碼   尾數數值

[x]浮 = 0    010   1101

[y]浮 = 1    111   1011

16_(1)尾數相乘(mx* my)

1.1 [ | mx | ]原= [+0.1101 b]原=0, 1101 b

[|my | ]原= [+0.1011b]原=0, 1011b

1.2 高 位 積 乘數/低位積

y000 0000 1 0 1 1

+[ y0*|x| ]補 00 1101

00 1101

右移 00 0110 1 1 0 1

+[ y0*|x| ]補 00 1101

01 0011

右移 00 1001 1 1 1 0

+[ y0*|x| ]補 00 0000

00 1001

右移 00 0100 1 1 1 1

+[ y0*|x| ]補 00 1101

01 0001

右移 00 1000 1 1 1 1

1.3 [mx * my] 符號=[ mx ]符號⊕[my]符號=0⊕1=1

1.4 [mx * my] 原=1,100011110b

16_(2)階碼求和

00 10

+ 11 11

00 01

16_(3)結果左規、舍入

尾數已為規格化形式,由於數值部分職能儲存4位,需對小數點後第5位進行0設1入,最終尾數原碼為1,1001b

最終運算結果為:1 001 1001

所以,x*y = 2+01b *(-0.1001b)

(3)除法運算

實現x/y運算,需要如下三步:

3.1 尾數相除(兩個定點小數相除)

3.2 階碼相減

3.3 結果規格化及舍入

例17:某浮點數階碼3位(含1位符號位:階符),補碼錶示,尾數3位(含1位符號位,數符),原碼錶示, x=210b * 0.

0011b, y=2-01b * 0.1011b,求 x/y

解:由已知條件,ex=+10b,mx = 0.0011 b,

ey=-01b,my =-0.1011 b

對應機器數分別為

[ex]補=[+10b]補=010b

[mx]原= [+0.0011 b]原=0, 0011b

[ey]補=[-01b]補=111b

[my]原= [-0.1011b]原=1, 1011b

機內浮點表示分別為:

數符   階碼   尾數數值

[x]浮 = 0    010   0011

[y]浮 = 1    111   1011

17_(1)尾數相除(mx/ my)

1.1 [ | mx | ]原= [+0.00110000 b]原=0, 00110000 b

[|my | ]原= [+0.1011b]原=0, 1011b

[-|my | ]補= 1, 0101b

1.2 被除數高位/餘數 被除數低位/商

00 0011 00000

+[-|my |]補 11 0101

11 1100 00000

左移 11 1000 00000

+[ |my |]補 00 1011

00 0011 00001

左移 00 0110 00010

+[-|my |]補 11 0101

11 1011 00010

左移 11 0110 00100

+[|my |]補 00 1011

00 0001 00101

左移 00 0010 01010

+[-|my |]補 11 0101

11 0111 01010

+[|my |]補 00 1011

00 0010

1.3 [mx /my] 商符號=[ mx ]符號⊕[my]符號=0⊕0=0

1.4 [mx / my] 商原=0,1010b

17_(2)階碼相減

[-ey]補=[+01b]補=001b

00 10

+ 00 01

00 11

17_(3)結果規格化、舍入

尾數已為規格化形式,餘數過小,結果也不必舍入,

最終運算結果為:0 011 1010

所以,x*y = 2+11b *(+0.1010b)

要計算過程

解 原式 1 2 1 3 1 3 1 4 1 4 1 5 1 5 1 6 1 2005 1 2006 1 2 1 2006 1003 2006 1 2006 1002 2006 501 1003 1003分之501 朋友,請採納正確答案,你們只提問,不採納正確答案,回答都沒有勁!朋友,請 採納答案 ...

C語言中浮點數變數範圍是怎麼計算出來的?還是官方定義的?為什

這個和儲存的格式有關係,先看看浮點數格式 一個浮點數總共有4個字專節,32位 第一個位元表符屬號 0正數 1負數 後八個位元表階碼,即為指數,這個數在實際的數上面加127最後23個位元表尾數 原碼錶示 實際上有8位是指數位 128到127 所以其範圍最大值是2 2 127 前面的2是因為最後23個位...

3 4 3 要計算過程

1 2 2 3 4 5 1 2 1 2 2 3 4 5 1 2 1 2 1 2 2 3 4 5 4 5 2 3 12 10 15 2 15 擴充套件資料 1 乘法簡便計算規律 乘法交換律 a b b a 乘法結合律 a b c a b c a b c 專乘法分屬配律 a b c a c b c a ...