與門減法器和乘法器的設(shè)計(jì)思路。
與門減法器和乘法器的設(shè)計(jì)思路。如下:
乘法器
減法器
一、乘法器講解:
值得注意的是,與門本身就有乘法的功能
并且與門本身就能計(jì)算1位乘法。
因?yàn)榕c門的真值表
00 0→0*0=0
10 0→1*0=0
01 0→0*1=0
11 1→1*1=1
那么我們要怎么解決位數(shù)高一些的乘法?
我們先看二進(jìn)制豎式是怎么計(jì)算高位乘法的。
比如一個7*7的二進(jìn)制豎式:(從左往右1248...)
111
111 *
--------
111 第一組與門(先看完下一段再回來看)
0111 第二組與門(同上)
00111 + 第三組與門(同上)
--------
100011
圖一中從下往上有三組與門(一組三個),從下往上的第一組與門到第三組與門就是與豎式中寫的對應(yīng)的。
而后面的全加器只是為了完成
111+0111+00111
這樣就根據(jù)二進(jìn)制的乘法豎式設(shè)計(jì)出了乘法器。
二、減法器講解:
對被減數(shù)反碼后補(bǔ)碼,減數(shù)再加上上一步操作的結(jié)果
例1 比如101-010=011
對010反碼→101
再對101補(bǔ)碼→110(相當(dāng)于給101+001)
最后101+110=1011(最高位的1表示正號)所以這一步的答案應(yīng)該是1 011也就是正011。
但是反碼補(bǔ)碼雖好,卻不能用小的數(shù)減大的數(shù)。
例2 比如001-100=0 011(最高位的0表示負(fù)號)
按照之前對100反碼補(bǔ)碼得到100
而001+100=0 101明顯不正確。
這樣就需要判斷大小了。
值得注意的是,在例1中,是大數(shù)減小數(shù),得到的符號位是1;而在例2中,是小數(shù)減大數(shù),得到的符號位是0。
也就是說,大數(shù)減小數(shù)得到的符號位和差都是對的;而小數(shù)減大數(shù)得到的符號位是對的,差是不對的。
所以假設(shè)有兩個二進(jìn)制數(shù)a、b,我們不知道它們的大小,但是我們要計(jì)算a-b的值。所以我們就可以同時(shí)計(jì)算a-b和b-a,根據(jù)減出來的符號位來判斷a、b的大小,然后獲取大數(shù)減小數(shù)的答案,最后補(bǔ)上差的正負(fù)號即可。
比如我們要計(jì)算a-b,所以我們同時(shí)計(jì)算a-b和b-a。
①如果a-b的符號位是1并且b-a的符號位是0,那么我們就獲取a-b的差為結(jié)果,并給這個結(jié)果冠以正號1。
②如果a-b的符號位是0并且b-a的符號位是1,那么我們就獲取b-a的差為結(jié)果,并給這個結(jié)果冠以負(fù)號0。
這樣我們就解決了減法器的小的數(shù)減大的數(shù)的問題。
但尚未解決負(fù)數(shù)減負(fù)數(shù)和負(fù)數(shù)減正數(shù)以及正數(shù)減負(fù)數(shù)的問題。
歡迎大家討論,如果有問題可以詢問或者反饋,我會及時(shí)更正。
確定不給我掛精貼嗎?
以上就是與門減法器和乘法器的設(shè)計(jì)思路。相關(guān)內(nèi)容。
閩公網(wǎng)安備 35021102000359號
網(wǎng)絡(luò)文化經(jīng)營許可證號:閩網(wǎng)文(2016)4364-073號