0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

計(jì)算機(jī)的門電路和加減乘除計(jì)算方法

西西 ? 來源:博客園 ? 作者:一睡萬古 ? 2020-08-08 15:54 ? 次閱讀

二進(jìn)制:二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)碼來表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”。計(jì)算機(jī)中的二進(jìn)制則是一個(gè)非常微小的開關(guān),用“開”來表示1,“關(guān)”來表示0。

二進(jìn)制的計(jì)算由計(jì)算機(jī)內(nèi)的門電路進(jìn)行,門電路可以有一個(gè)或多個(gè)輸入端,但只有一個(gè)輸出端。

原碼(true form)是一種計(jì)算機(jī)中對(duì)數(shù)字的二進(jìn)制定點(diǎn)表示方法。原碼表示法在數(shù)值前面增加了一位符號(hào)位(即最高位為符號(hào)位):正數(shù)該位為0,負(fù)數(shù)該位為1(0有兩種表示:+0和-0),其余位表示數(shù)值的大小。

簡單直觀;例如,我們用8位二進(jìn)制表示一個(gè)數(shù),+11的原碼為00001011,-11的原碼就是10001011

反碼:規(guī)定 正數(shù)的反碼與原碼相同。負(fù)數(shù):負(fù)數(shù)的反碼,符號(hào)位為“1”,數(shù)值部分按位取反。

補(bǔ)碼:規(guī)定 正數(shù):正數(shù)的補(bǔ)碼和原碼相同。負(fù)數(shù):負(fù)數(shù)的補(bǔ)碼則是符號(hào)位為“1”。并且,這個(gè)“1”既是符號(hào)位,也是數(shù)值位。數(shù)值部分按位取反后再在末位(最低位)加1。也就是“反碼+1”。

1、門電路

1.1、定義

門電路:“門”是這樣的一種電路:它規(guī)定各個(gè)輸入信號(hào)之間滿足某種邏輯關(guān)系時(shí),才有信號(hào)輸出,通常有下列三種門電路:與門、或門、非門(反相器)。從邏輯關(guān)系看,門電路的輸入端或輸出端只有兩種狀態(tài),無信號(hào)以“0”表示,有信號(hào)以“1”表示。也可以這樣規(guī)定:低電平為“0”,高電平為“1”。門電路一般配合二級(jí)管制做。

1.2、與門

一種基本的門電路,有多個(gè)輸入端,一個(gè)輸出端。當(dāng)所有的輸入同時(shí)為高電平(邏輯1)時(shí),輸出才為高電平,否則輸出為低電平(邏輯0)。

與門的真值表:

計(jì)算機(jī)的門電路和加減乘除計(jì)算方法

與門的二級(jí)管實(shí)現(xiàn):

二極管實(shí)現(xiàn)為例,與門的實(shí)現(xiàn)原理為:

如圖:為二極管與門電路,Vcc = 5v,R1 = 3KΩ, 假設(shè)3v及以上代表高電平,0.7及以下代表低電平,

下面根據(jù)圖中情況具體分析一下,

1. Ua=Ub=0v時(shí),D1,D2正向偏置,兩個(gè)二極管均會(huì)導(dǎo)通,此時(shí)Uo為電位為0.7v.,輸出為低電平

2.當(dāng)Ua,Ub一高一低時(shí),不妨假設(shè)Ua = 3v,Ub = 0v,這時(shí)我們不妨先從D2開始分析,

D2會(huì)導(dǎo)通,導(dǎo)通后D2壓降將會(huì)被限制在0.7v,那么D1由于右邊是0.7v左邊是3v所以會(huì)反向偏置而截止,因此最后Uo為0.7v低電平輸出,這里也可以從D1開始分析,如果D1導(dǎo)通,那么Uo應(yīng)當(dāng)為3.7v,

此時(shí)D2將導(dǎo)通,那么D2導(dǎo)通,壓降又會(huì)變回0.7,最終狀態(tài)Uo仍然是0.7v.輸出低電平,此時(shí)D1馬上截止。

3. Va=Vb=3v,這個(gè)情況很好理解, D1,D2都會(huì)正偏,Uy被限定在3.7V.

總結(jié)(借用個(gè)定義):通常二極管導(dǎo)通之后,如果其陰極電位是不變的,那么就把它的陽極電位固定在比陰極高0.7V的電位上;如果其陽極電位是不變的,那么就把它的陰極電位固定在比陽極低0.7V的電位上,人們把導(dǎo)通后二極管的這種作用叫做鉗位。(特別說明:壓差大的二極管先導(dǎo)通,先鉗位,先導(dǎo)通的二極管具有電路控制權(quán))

1.3、或門

一種基本的門電路:或門有多個(gè)輸入端,一個(gè)輸出端,只要輸入中有一個(gè)為高電平時(shí)(邏輯“1”),輸出就為高電平(邏輯“1”);只有當(dāng)所有的輸入全為低電平(邏輯“0”)時(shí),輸出才為低電平(邏輯“0”)

或門的真值表:

計(jì)算機(jī)的門電路和加減乘除計(jì)算方法

或門的二級(jí)管實(shí)現(xiàn):

如圖,這里取Vss=0v,不取-10v

1、當(dāng)Ua=Ub=0v時(shí),D1,D2都截至,那么y點(diǎn)為0v.

2、當(dāng)Ua=3v,Ub=0v時(shí),此時(shí)D1導(dǎo)通,Uy=3-0.7=2.3v,D2則截至

同理Ua=0v,Ub=3v時(shí),D2導(dǎo)通,D1截至,Uy=2.3v.

3、當(dāng)Ua=Ub=3v時(shí),此時(shí)D1,D2都導(dǎo)通,Uy=3-0.7=2.3v.

1.4、非門

一種基本的門電路:非門有一個(gè)輸入和一個(gè)輸出端。當(dāng)其輸入端為高電平(邏輯1)時(shí)輸出端為低電平(邏輯0),當(dāng)其輸入端為低電平時(shí)輸出端為高電平。也就是說,輸入端和輸出端的電平狀態(tài)總是反相的。

非門的真值表:

計(jì)算機(jī)的門電路和加減乘除計(jì)算方法

三級(jí)管非門的實(shí)現(xiàn):

晶體管“非”門電路不同于放大電路,管子的工作狀態(tài)或從截止轉(zhuǎn)為飽和,或從飽和轉(zhuǎn)為截止?!胺恰遍T電路只有一個(gè)輸入端A,

當(dāng)A為“1”(設(shè)其電位為3V)時(shí),晶體管飽和,其集電極,即輸出端Y為“0”(其電位在零伏附近);

當(dāng)A為“0”時(shí),晶體管截止,輸出端Y為“1”(其電位近似等于)。所以“非”門電路也稱為反相器。加負(fù)電源是為了使晶體管可靠截止。

圖中,是“非”門的門電阻,其作用是通過它向輸出端提供電壓。T飽和,上產(chǎn)生很大的壓降,使集電極電位幾乎與發(fā)射極的電位相等;截止時(shí),通過加到集電極上,使集電極電壓等于。是輸入電阻,通過它給T加正向偏置電流,即輸入信號(hào)。是反偏電阻,通過它給T加反向偏置電流。這兩個(gè)電阻配合得當(dāng),才可以使輸入“1”時(shí)T飽和導(dǎo)通,輸入“0”時(shí)T可靠截止。

1.5、其他門電路

其他門電路如:與非門、或非門、異或門等都是以上三個(gè)基本門電路組合而來。

異或門:若兩個(gè)輸入的電平相異,則輸出為高電平1;若兩個(gè)輸入的電平相同,則輸出為低電平0。亦即,如果兩個(gè)輸入不同,則異或門輸出高電平1。

2、加減乘除計(jì)算

2.1、加法運(yùn)算

加法器:對(duì)于1位的二進(jìn)制加法,相關(guān)的有五個(gè)的量:1,被加數(shù)A,2,被加數(shù)B,3,前一位的進(jìn)位CIN,4,此位二數(shù)相加的和S,5,此位二數(shù)相加產(chǎn)生的進(jìn)位COUT。前三個(gè)量為輸入量,后兩個(gè)量為輸出量,五個(gè)量均為1位。

計(jì)算機(jī)的加法器都是以上面的逐位進(jìn)位加法器優(yōu)化而來,不再深入探索,有興趣的可自行查找資料

加法器原理就是用門電路實(shí)現(xiàn)二進(jìn)制的相加運(yùn)算。

2.2、減法運(yùn)算

在計(jì)算機(jī)中,加法和減法其實(shí)是一種運(yùn)算,原因在于計(jì)算機(jī)表示負(fù)數(shù)的方法。

計(jì)算機(jī)中的數(shù)據(jù)存儲(chǔ)時(shí)都會(huì)轉(zhuǎn)化成相應(yīng)的二進(jìn)制補(bǔ)碼,補(bǔ)碼有三個(gè)特性:

1、一個(gè)負(fù)整數(shù)(或原碼)與其補(bǔ)數(shù)(或補(bǔ)碼)相加,和為模。

2、對(duì)一個(gè)整數(shù)的補(bǔ)碼再求補(bǔ)碼,等于該整數(shù)自身。

3、補(bǔ)碼的正零與負(fù)零表示方法相同。

模的定義:“模”是指一個(gè)計(jì)量系統(tǒng)的計(jì)數(shù)范圍。如時(shí)鐘等。計(jì)算機(jī)也可以看成一個(gè)計(jì)量機(jī)器,它也有一個(gè)計(jì)量范圍,即都存在一個(gè)“?!薄@纾?/p>

時(shí)鐘的計(jì)量范圍是0~11,模=12。表示n位的計(jì)算機(jī)計(jì)量范圍是0~2^(n)-1,模=2^(n)。

“模”實(shí)質(zhì)上是計(jì)量器產(chǎn)生“溢出”的量,它的值在計(jì)量器上表示不出來,計(jì)量器上只能表示出模的余數(shù)。任何有模的計(jì)量器,均可化減法為加法運(yùn)算。

例如:假設(shè)當(dāng)前時(shí)針指向10點(diǎn),而準(zhǔn)確時(shí)間是6點(diǎn),調(diào)整時(shí)間可有以下兩種撥法:一種是倒撥4小時(shí),即:10-4=6;另一種是順撥8小時(shí):10+8=12+6=6

舉例:

1、如計(jì)算機(jī)要計(jì)算8-3

2、存儲(chǔ)8為:0000 1000 (正數(shù)的補(bǔ)碼與原碼相同)

3、存儲(chǔ)-3為:1111 1101 (負(fù)數(shù)的補(bǔ)碼為符號(hào)為定為1,其他位求反碼后加1)

4、8-3 可直接用加法器做加法運(yùn)算8 + (-3) 二進(jìn)制可得:0000 0101 轉(zhuǎn)化為十進(jìn)制為:5

2.3、乘法運(yùn)算

我們計(jì)算兩個(gè)數(shù)相乘時(shí)一般如下計(jì)算:

計(jì)算機(jī)的門電路和加減乘除計(jì)算方法

其實(shí)加法器也是模擬這樣的過程,只不過是改為了二進(jìn)制數(shù)而已。計(jì)算機(jī)通過加法器和適當(dāng)?shù)囊莆徊僮魍瓿闪顺朔ㄟ\(yùn)算。

例子:

1011 X 1001 用十進(jìn)制表示為 11X9 結(jié)果當(dāng)然為99

以上文章中有很多乘法器的優(yōu)化,我只講我覺得好理解的一個(gè)

一、乘數(shù)寄存器四位保存1011。

二、被乘數(shù)寄存器四位保存1001。

三、乘積寄存器八位保存乘積,初始0000 0000,乘積寄存器只前四位參與運(yùn)算,后四位只為記錄。

1、第一次運(yùn)算取乘數(shù)最后一位 得1,乘積寄存器前四位加 被乘數(shù) 得 1001 0000

2、乘數(shù)寄存器右移一位得:0101 乘積寄存器右移一位得 0100 1000

3、第二次運(yùn)算重復(fù)步驟1、2 得,乘數(shù):0010 乘積:0110 1100

4、如此,乘數(shù)有幾位就重復(fù)次幾運(yùn)算,當(dāng)乘數(shù)最后一位為0 時(shí)不做加操作,只進(jìn)行移位。

5、第三次運(yùn)算得,乘數(shù):0001 乘積: 0011 0110

6、第四次運(yùn)算得,乘數(shù):0000,四次后整個(gè)運(yùn)算完成,乘積:0110 0011 轉(zhuǎn)化為十進(jìn)制為:99

如上步驟中我們可以看出,計(jì)算機(jī)計(jì)算乘法跟我們計(jì)算乘法時(shí)的步驟一樣,我們用乘數(shù)的個(gè)十百千們分別與被乘數(shù)相乘,然后錯(cuò)位相加得積,計(jì)算積也是把乘數(shù)的第一二三四位分別與被乘數(shù)相乘(相乘時(shí)乘數(shù)為1則積為被乘數(shù),乘數(shù)為0時(shí)則四位全為0所以此時(shí)只進(jìn)行移位操作) 然后用移位操作來模擬錯(cuò)位相加。

2.4、除法運(yùn)算

文章里也有很多除法器優(yōu)化方案,我只以容易理解的說,其原理都是一般。

原理:除法可以變化為減法來算,一個(gè)數(shù)除以另一個(gè)數(shù),可以理解為一個(gè)數(shù)循環(huán)減去另一個(gè)數(shù)減了幾遍商便是幾,這種方式在十進(jìn)制里可能實(shí)在麻煩,但是在二進(jìn)制里卻簡單了不少。

如果兩個(gè)一位數(shù)相除8/3 可理解為8-3-3 = 2,得商為2 余數(shù)為2,但在二進(jìn)制里兩個(gè)一位數(shù)相除只有兩種可能,一種是我大于你,商得1余數(shù)是兩個(gè)數(shù)相減,另一種是我小于你商是0,余數(shù)是我本身;

計(jì)算機(jī)的門電路和加減乘除計(jì)算方法

如上計(jì)算方式我們十進(jìn)制時(shí)也是常用的,只是我們配合九九乘法口決計(jì)算,而二進(jìn)制里只需要從被除數(shù)高位開始逐位與除數(shù)相減,減的到此為得1 ,決不會(huì)有可以減兩次的可能(即商不可能得2),減不到此位得0;

1、被除數(shù)十一位寄存,其實(shí)有效數(shù)字只占七位、除數(shù)四位寄存、商八位寄存,被除數(shù)參與運(yùn)算的只有前四位(因?yàn)槌龜?shù)為四位即前四位)

2、被除數(shù):0000 1001 010 除數(shù):1000 商:0000 0000

3、參于運(yùn)算的值我用紅色標(biāo)識(shí): (1)被除數(shù)左移進(jìn)入運(yùn)算位后位補(bǔ)0: 0001 0010 100 除數(shù):1000 減不到商得0 余為0001 商左移《1》為0000 0000

4、(2)被除數(shù)左移一位 變?yōu)椋?010 0101 000 除數(shù):1000 減不到此為得0 余為0010 商左移《2》為0000 0000

5、(3)被除數(shù)再左移變?yōu)椋?100 1010 000 商左移《3》為0000 0000,(4)再左移得:1001 0100 000 此時(shí)可以減得 商左移《4》為0000 0001 余數(shù)為:0001,被除數(shù)被減后變?yōu)椋?001 0100 000

6、(5)被除數(shù)左移變?yōu)?010 1000 000 《5》商左移為0000 0010 (6)再左移:0101 0000 000 《6》商左移為0000 0100 (7)再左移:1010 0000 000 此時(shí)可以減得 《7》商左移為0000 1001 余數(shù)為:0010 被除數(shù)被減后變?yōu)椋?010 0000 000

7、被除數(shù)有幾位就移動(dòng)幾位,商也跟著移動(dòng)幾位,如上圖標(biāo)號(hào)標(biāo)識(shí),七次移位后得商為:0000 1001 余數(shù)為:0010 后七位舍去,只要參與計(jì)算的前四位。轉(zhuǎn)化為十進(jìn)制為74/8 = 9 余 2

總結(jié):除法器可以用減法替代除法,因?yàn)檫@樣移位相減,在某一位上最多只能減一次被除數(shù)便會(huì)小于除數(shù),所以商得1,同理十進(jìn)制被除數(shù)和除數(shù)如此移位相減的話在某一位上最多只能減九次,即商最大只能為9。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    795

    瀏覽量

    41700
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7523

    瀏覽量

    88309
  • 門電路
    +關(guān)注

    關(guān)注

    7

    文章

    199

    瀏覽量

    40207
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    用AT89S52單片機(jī)制作萬年歷外加簡單計(jì)算器,主要是加減乘除

    有哪位朋友做過用AT89S52單片機(jī)制作萬年歷外加簡單計(jì)算器,主要是加減乘除,求程序,現(xiàn)在主要是計(jì)算器那一塊
    發(fā)表于 05-21 19:57

    labview如何實(shí)現(xiàn)加減乘除的混合運(yùn)算

    本帖最后由 liuliwei25 于 2016-1-28 14:44 編輯 請(qǐng)問labview如何實(shí)現(xiàn)加減乘除的混合運(yùn)算,如圖所示。謝謝
    發(fā)表于 01-28 14:29

    編制程序?qū)崿F(xiàn)計(jì)算器功能,包含加減乘除運(yùn)算。

    編制程序?qū)崿F(xiàn)計(jì)算器功能,包含加減乘除運(yùn)算。
    發(fā)表于 04-15 22:38

    霧盈FPGA筆記之(三十二)六位四則運(yùn)算計(jì)算器(8)算法實(shí)現(xiàn)加減乘除

    六位四則運(yùn)算計(jì)算器(8)算法實(shí)現(xiàn)加減乘除霧盈 2016-8-31 一、寫在前面今天來講計(jì)算模塊,這個(gè)模塊在我的計(jì)算器設(shè)計(jì)里不是核心項(xiàng)目,只是個(gè)計(jì)算
    發(fā)表于 09-01 09:03

    用Case結(jié)構(gòu)設(shè)計(jì)一個(gè)簡易計(jì)算器,僅需要滿足加減乘除即可,但要求加減乘除四個(gè)運(yùn)算符用下拉菜單表示。

    消失。 其實(shí)就相當(dāng)于一個(gè)簡易計(jì)算器,但是要求加減乘除4個(gè)運(yùn)算符得用下拉式菜單表示,糾結(jié)了很久沒弄出來。希望有人能幫助我解決以下。
    發(fā)表于 09-28 16:24

    用數(shù)碼管顯示的簡易計(jì)算器(可加減乘除)利用矩陣鍵盤實(shí)現(xiàn),原理圖和程序誰懂???大神求教。

    用數(shù)碼管顯示的簡易計(jì)算器(可加減乘除)利用矩陣鍵盤實(shí)現(xiàn),原理圖和程序誰懂???大神求教。
    發(fā)表于 12-29 09:55

    伺服電機(jī)的選型計(jì)算方法相關(guān)資料分享

    轉(zhuǎn)載請(qǐng)保留本文地址:http://www.kdr8.com/article/motor/70.html伺服電機(jī)的選型計(jì)算方法 :一、轉(zhuǎn)速和編碼器分辨率的確認(rèn)。二、電機(jī)軸上負(fù)載力矩的折算和加減速力矩
    發(fā)表于 06-28 07:16

    聊聊計(jì)算機(jī)加法的電路原理和proteus仿真

    我們知道,計(jì)算機(jī)的功能,都是通過計(jì)算來完成的,而這個(gè)計(jì)算是怎樣完成的呢?答案是:電路。在前面的文章中,我們深入探討了編碼的本質(zhì)以及計(jì)算機(jī)的工
    發(fā)表于 07-29 06:19

    怎樣去設(shè)計(jì)一個(gè)簡易計(jì)算

    1、功能描述設(shè)計(jì)一個(gè)簡易計(jì)算器,模擬常見計(jì)算器的加減乘除運(yùn)算功能,通過1602液晶屏來顯示數(shù)字、4*4的矩陣按鍵來模擬計(jì)算機(jī)的按鍵,2、PROTEUS中設(shè)計(jì)的
    發(fā)表于 11-09 07:37

    使用51單片機(jī)設(shè)計(jì)的可連續(xù)運(yùn)算的加減乘除數(shù)碼管顯示計(jì)算器程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的可連續(xù)運(yùn)算的加減乘除數(shù)碼管顯示計(jì)算器程序免費(fèi)下載。
    發(fā)表于 04-15 18:24 ?21次下載
    使用51單片機(jī)設(shè)計(jì)的可連續(xù)運(yùn)算的<b class='flag-5'>加減乘除</b>數(shù)碼管顯示<b class='flag-5'>計(jì)算</b>器程序

    大話計(jì)算機(jī)的PPT演示文稿資料免費(fèi)下載

    問題,一步步解決,最后引出譯碼器、觸發(fā)器等邏輯電路。最后逐漸搭建出一個(gè)可以算多位數(shù)加減乘除的按鍵式計(jì)算器。最后引出 ALU 的概念。
    發(fā)表于 11-19 15:14 ?34次下載
    大話<b class='flag-5'>計(jì)算機(jī)</b>的PPT演示文稿資料免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)簡單的加減乘除計(jì)算器資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)簡單的加減乘除計(jì)算器資料免費(fèi)下載。
    發(fā)表于 06-18 08:00 ?12次下載
    使用51單片機(jī)實(shí)現(xiàn)簡單的<b class='flag-5'>加減乘除</b><b class='flag-5'>計(jì)算</b>器資料免費(fèi)下載

    比量子計(jì)算機(jī)更容易構(gòu)建的新的計(jì)算機(jī)制造方法 用液晶構(gòu)建計(jì)算機(jī)

    缺陷可編碼為不同的值。電場可用來操縱分子進(jìn)行基本計(jì)算,類似于普通計(jì)算機(jī)內(nèi)簡單的邏輯門電路的工作方式,在所提出的新型計(jì)算機(jī)上,這些計(jì)算將顯示為
    的頭像 發(fā)表于 08-24 19:58 ?1331次閱讀

    用C++寫的計(jì)算機(jī)模板

    反正就是個(gè)簡易的計(jì)算器,加減乘除
    發(fā)表于 06-25 11:42 ?0次下載

    bigdecimal的加減乘除java

    BigDecimal是Java中提供的一個(gè)用于精確計(jì)算的類,它可以實(shí)現(xiàn)浮點(diǎn)數(shù)的精確加減乘除運(yùn)算,避免了在使用浮點(diǎn)數(shù)進(jìn)行計(jì)算時(shí)可能出現(xiàn)的舍入誤差。 首先,我們需要明確一點(diǎn),浮點(diǎn)數(shù)在計(jì)算機(jī)
    的頭像 發(fā)表于 11-30 11:19 ?1493次閱讀