亚洲 日韩 激情 无码 中出,无码人妻久久一区二区三区蜜桃,亚无码乱人伦一区二区,四虎影视永久免费观看,四虎成人精品一区二区免费网站

電腦怎么計算減法視頻教程(你知道計算機是怎么計算加減乘除算式的么?)

小編:芯水 更新時間:2022-11-19 08:50

說到加減乘除運算,只要學(xué)過乘法口訣的應(yīng)該沒有不會算的吧。

什么一一得一,一二得二.。。。信手拈來,簡直不要太容易。

難一點的無非也就是這四種運算符號組合起來而已,但是如此簡單的運算對于計算機而言,真的不是一件輕松的活啊。

就運算速度上,計算機遠(yuǎn)超你我。

就運算簡易程度而言,你我勝過計算機。

為什么這么說呢?

下面舉個栗子,求一個算式(也叫中綴表達(dá)式)結(jié)果:5+(6-3)*4+8/2=?

對于我們而言,這個算式輕松的得到答案是21。那么計算機,又是如何得出這個結(jié)果的呢?

談到這個問題,首先我們應(yīng)該了解兩個知識:棧(stack)和后綴表達(dá)式

電腦怎么計算減法視頻教程(你知道計算機是怎么計算加減乘除算式的么?)

什么是棧?

棧又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出?;蛲藯?,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

可以這么理解棧:棧相當(dāng)于一個沒有瓶蓋的空瓶子。向瓶子內(nèi)放入東西叫做入棧,從瓶子里倒出東西叫做出棧。瓶底叫棧底,瓶口叫棧頂。雖然不是很恰當(dāng),但是這么理解還是可以的。

什么是后綴表達(dá)式?

后綴表達(dá)式也叫逆波蘭式。它是波蘭的邏輯學(xué)家盧卡西維奇(Lukasiewicz)發(fā)明的一種表示表達(dá)式的方法。這種表示方式把運算符寫在運算對象的后面,例如,把a+b寫成ab+,所以也稱為后綴式。這種表示法的優(yōu)點是根據(jù)運算對象和算符的出現(xiàn)次序進(jìn)行計算,不需要使用括號,也便于用械實現(xiàn)求值。對于表達(dá)式x:=(a+b)*(c+d),其后綴式為xab+cd+*:=。

計算機對上述運算表達(dá)式的過程大致分為兩個步驟:

①將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式

②通過執(zhí)行后綴表達(dá)式得出結(jié)果

電腦怎么計算減法視頻教程(你知道計算機是怎么計算加減乘除算式的么?)

首先介紹轉(zhuǎn)換為后綴表達(dá)式的過程。轉(zhuǎn)換的過程中遵循一個規(guī)則(符號進(jìn)棧,數(shù)字輸出):

從左到右遍歷中綴表達(dá)式的每個數(shù)字和符號

如果是數(shù)字就加入后綴表達(dá)式

如果是符號,判斷括號:如果是左括號“(”,直接入棧;是右括號“)”,則依次從棧中取出運算符加入后綴表達(dá)式中,直至取到“(”后停止,并且將棧中“(”刪除

如果是括號以外的其他運算符,判斷這個運算符和棧頂符號優(yōu)先級:其優(yōu)先級低于或者等于棧頂符號則先將棧中符號依次彈出加入后綴表達(dá)式后自身入棧,否則自身就直接入棧

直到遍歷中綴表達(dá)式結(jié)束,得到后綴表達(dá)式

詳細(xì)過程:

將5輸出,+進(jìn)棧; 目前輸出為5,棧中為+;

遇到(,進(jìn)棧; 目前輸出為5,棧底到棧頂依次為+ (;

將6輸出,減號進(jìn)棧,3輸出; 目前輸出為5 6 3,棧底到棧頂依次為+ (-;

遇到),去匹配(,棧頂符號出棧,直到(出棧; 目前輸出為5 6 3-,棧中為+;

遇到乘號進(jìn)棧,6輸出;目前輸出為5 6 3 - 4,棧底到棧頂依次為+ *;

遇到+,由于+的優(yōu)先級比*低,所以棧中所有元素都出棧,自身進(jìn)棧; 目前輸出為5 6 3 - 4 * +,棧底到棧頂依次為+;

遇到10輸出,除號進(jìn)棧;目前輸出為5 6 3 - 4 * + 8,棧底到棧頂依次為+/;

遇到2輸出;目前輸出為5 6 3 - 4 *+ 8 2,棧底到棧頂依次為+/;

表達(dá)式結(jié)束,棧中全部依次出棧,最終為5 6 3 - 4 * + 8 2 / +;

其次是后綴表達(dá)式的執(zhí)行過程。其執(zhí)行過程也遵循一個規(guī)則:

從左向右遍歷后綴表達(dá)式的每個數(shù)字和符號,

遇到是數(shù)字就進(jìn)棧

遇到是符號,就將處于棧頂兩個數(shù)字出棧,三者進(jìn)行運算得到的運算結(jié)果進(jìn)棧, 直到最后獲得運算結(jié)果

5 6 3 依次進(jìn)棧,然后遇到了減號;此時棧底到棧頂依次為5 6 3;

處于棧頂?shù)?和6出棧,相減得到3,將3進(jìn)棧;此時棧底到棧頂依次為5 3;

4進(jìn)棧,然后遇到乘號;此時棧底到棧頂依次為5 3 4;

處于棧頂?shù)?和3出棧,相乘得到12,將12進(jìn)棧;此時棧底到棧頂依次為5 12;

遇到加號,處于棧頂?shù)?2和5出棧,加一下得到17,將17進(jìn)棧;此時棧里只有一個17;

8 2依次進(jìn)棧,然后遇到除號;此時棧底到棧頂依次為17 8 2;

處于棧頂?shù)?和8出棧,相除得到4,將4進(jìn)棧;此時棧底到棧頂依次為17 4;

遇到加號,處于棧頂?shù)?和17出棧,想加得到21,將21進(jìn)棧;

表達(dá)式結(jié)束,輸出結(jié)果21,棧變空。

看完感覺怎樣?

是不是很復(fù)雜?

其實還好吧,233。。。

有的小伙伴可能又要吐槽了,知道這些過程有個屁用,實際工作中會讓你寫這個過程么?

是的,工作可能不需要你了解底層如何計算,你需要告訴計算機這些數(shù)字和運算符,剩下的就等著拿到結(jié)果就ok。

我想說,編程重要的不是你能不能完成單純的開發(fā)任務(wù),而是你能不能從任務(wù)中看到背后的編程思想。

思想決定高度!

思想有多遠(yuǎn),你就能走多遠(yuǎn)~~~~~~~~

電腦怎么計算減法視頻教程(你知道計算機是怎么計算加減乘除算式的么?)