- N +

原碼一位乘法器實(shí)驗(yàn)實(shí)驗(yàn)體會(huì)(原碼一位乘法)

原碼兩位乘法計(jì)算過(guò)程

值部分的運(yùn)算方法與普通的十進(jìn)制小數(shù)乘法類似,不過(guò)對(duì)于用二進(jìn)制表達(dá)式的數(shù)來(lái)說(shuō),其乘法規(guī)則更為簡(jiǎn)單一些。

設(shè)x=0.1101,y=0.1011.讓我們先用習(xí)慣方法求其乘積,其過(guò)程如下:

運(yùn)算的過(guò)程與十進(jìn)制乘法相似:從乘數(shù)y的最低位開(kāi)始,若這一位為“1”,則將被乘數(shù)x寫(xiě)下;若這一位為“0”,則寫(xiě)下全0。然后在對(duì)乘數(shù)y的最高為進(jìn)行乘法運(yùn)算,其規(guī)則同上,不過(guò)這一位乘數(shù)的權(quán)與最低位乘數(shù)的權(quán)不一樣,因此被乘數(shù)x要左移一位。以此類推,直到乘數(shù)個(gè)位乘完為止,最后將它們統(tǒng)統(tǒng)加起來(lái),變得到最后乘積z。

單片機(jī)為何用原碼進(jìn)行乘除運(yùn)算

1.原碼表示方法的優(yōu)點(diǎn),是在數(shù)的真值和它的原碼表示之間的對(duì)應(yīng)關(guān)系簡(jiǎn)單,相互轉(zhuǎn)換容易,用原碼實(shí)現(xiàn)乘除運(yùn)算的規(guī)則簡(jiǎn)單.缺點(diǎn)是用原碼實(shí)現(xiàn)加減運(yùn)算很不方便.要比較參與加減運(yùn)算兩個(gè)數(shù)的符號(hào),要比較兩個(gè)數(shù)的絕對(duì)值的大小,還要確定運(yùn)算結(jié)果的正確的符號(hào)等,因此在計(jì)算機(jī)中經(jīng)常用后面介紹的補(bǔ)碼實(shí)現(xiàn)加減運(yùn)算.2.補(bǔ)碼的設(shè)計(jì)目的是:⑴使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡(jiǎn)化運(yùn)算規(guī)則.⑵使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì).3.用反碼實(shí)現(xiàn)算術(shù)運(yùn)算不方便,0值又有兩個(gè)編碼,用得不很普遍.希望能幫助你哈

13和10的二進(jìn)制乘法

正整數(shù)的補(bǔ)碼是其二進(jìn)制表示,與原碼相同。負(fù)整數(shù)的補(bǔ)碼,將其原碼除符號(hào)位外的所有位取反(0變1,1變0,符號(hào)位為1不變)后加1。

二進(jìn)制原碼的加運(yùn)算為0+0=0,0+1=1,1+0=1,1+1=10,(逢2進(jìn)1);減運(yùn)算為1-1=0,1-0=1,0-0=0,0-1=1,(向高位借1當(dāng)2)。即13-10=01101+11010=100011;-13-10=110011+11010=1101001。

如果補(bǔ)碼的符號(hào)位為“0”,表示是一個(gè)正數(shù),其原碼就是補(bǔ)碼。如果補(bǔ)碼的符號(hào)位為“1”,表示是一個(gè)負(fù)數(shù),那么求給定的這個(gè)補(bǔ)碼的補(bǔ)碼就是要求的原碼。

即13-10去掉符號(hào)位前的多余位數(shù),00011=1*2^1+1*2^0=3;-13-10去掉符號(hào)位前的多余位數(shù),110011+11010=1101001=1010110+1=1010111=-(1*2^4+1*2^3+1*2^0)=-23。

什么是補(bǔ)碼可以舉例說(shuō)明一下嗎

數(shù)值有正負(fù)之分,計(jì)算機(jī)就用一個(gè)數(shù)的最高位存放符號(hào)(0為正,1為負(fù)).這就是機(jī)器數(shù)的原碼了.假設(shè)機(jī)器能處理的位數(shù)為8.即字長(zhǎng)為1byte,原碼能表示數(shù)值的范圍為

(-127~-0+0~127)共256個(gè).

有了數(shù)值的表示方法就可以對(duì)數(shù)進(jìn)行算術(shù)運(yùn)算.但是很快就發(fā)現(xiàn)用帶符號(hào)位的原碼進(jìn)行乘除運(yùn)算時(shí)結(jié)果正確,而在加減運(yùn)算的時(shí)候就出現(xiàn)了問(wèn)題,如下:假設(shè)字長(zhǎng)為8bits

(1)10-(1)10=(1)10+(-1)10=(0)10

(00000001)原+(10000001)原=(10000010)原=(-2)顯然不正確.

因?yàn)樵趦蓚€(gè)整數(shù)的加法運(yùn)算中是沒(méi)有問(wèn)題的,于是就發(fā)現(xiàn)問(wèn)題出現(xiàn)在帶符號(hào)位的負(fù)數(shù)身上,對(duì)除符號(hào)位外的其余各位逐位取反就產(chǎn)生了反碼.反碼的取值空間和原碼相同且一一對(duì)應(yīng).下面是反碼的減法運(yùn)算:

(1)10-(1)10=(1)10+(-1)10=(0)10

(00000001)反+(11111110)反=(11111111)反=(-0)有問(wèn)題.

(1)10-(2)10=(1)10+(-2)10=(-1)10

(00000001)反+(11111101)反=(11111110)反=(-1)正確

問(wèn)題出現(xiàn)在(+0)和(-0)上,在人們的計(jì)算概念中零是沒(méi)有正負(fù)之分的.(印度人首先將零作為標(biāo)記并放入運(yùn)算之中,包含有零號(hào)的印度數(shù)學(xué)和十進(jìn)制計(jì)數(shù)對(duì)人類文明的貢獻(xiàn)極大).

于是就引入了補(bǔ)碼概念.負(fù)數(shù)的補(bǔ)碼就是對(duì)反碼加一,而正數(shù)不變,正數(shù)的原碼反碼補(bǔ)碼是一樣的.在補(bǔ)碼中用(-128)代替了(-0),所以補(bǔ)碼的表示范圍為:

(-128~0~127)共256個(gè).

注意:(-128)沒(méi)有相對(duì)應(yīng)的原碼和反碼,(-128)=(10000000)補(bǔ)碼的加減運(yùn)算如下:

(1)10-(1)10=(1)10+(-1)10=(0)10

(00000001)補(bǔ)+(11111111)補(bǔ)=(00000000)補(bǔ)=(0)正確

(1)10-(2)10=(1)10+(-2)10=(-1)10

(00000001)補(bǔ)+(11111110)補(bǔ)=(11111111)補(bǔ)=(-1)正確

所以補(bǔ)碼的設(shè)計(jì)目的是:

⑴使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡(jiǎn)化運(yùn)算規(guī)則.

⑵使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)

返回列表
上一篇:
下一篇: