因?yàn)樵谟?jì)算過(guò)程中,我們發(fā)現(xiàn)被乘數(shù)是不動(dòng)的,而是把乘數(shù)的每一位去乘上被乘數(shù)的每一位,每次結(jié)果都會(huì)左移一位。(看下圖)在這里插入圖片描述但與普通乘法不同的是原碼一位乘法計(jì)算過(guò)程中出現(xiàn)了進(jìn)位C、部分積P和乘數(shù)寄存器Y...
什么是原碼一位乘法呢?答:乘積的符號(hào)位由兩數(shù)的符號(hào)按異或運(yùn)算得到,而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積
正確答案:數(shù)據(jù)取絕對(duì)值參加運(yùn)算;符號(hào)位單獨(dú)處理;乘法執(zhí)行過(guò)程中的所有移位都是算術(shù)移位;最后的結(jié)果由部分積寄存器和乘數(shù)寄存器共同保存
換成十進(jìn)制,X=16+8+0+2+1=27Y=-(16+8+4+2+1)=31故X*Y=-837換成二進(jìn)制等于1100000101
原碼的話就是加0,不論正負(fù)數(shù)。補(bǔ)碼的話就要區(qū)分,補(bǔ)碼正數(shù)左右移都是補(bǔ)0,負(fù)數(shù)的話,左移補(bǔ)0,右移補(bǔ)1。詳細(xì)的話你可以百度“帶符號(hào)數(shù)的移位操作”
我的理解是,原碼一位乘是用的絕對(duì)值,進(jìn)行邏輯右移,不會(huì)影響到符號(hào)位(符號(hào)位單獨(dú)提出來(lái)進(jìn)行異或計(jì)算),所以只需要一位符號(hào)位。至于之后的浮點(diǎn)數(shù)范圍應(yīng)該是默認(rèn)的原碼吧(或者說(shuō)是二進(jìn)制真值?),如果考慮補(bǔ)碼題目會(huì)特別給...
如果是正數(shù),即符號(hào)位是0,補(bǔ)碼即原碼。如果是負(fù)數(shù),符號(hào)位是1,補(bǔ)碼是原碼求反加1,反碼是原碼求反。已知補(bǔ)碼求原碼就是減1求反。1001*1011=(1000+1)*(1000+11)=1000*1000+1000*11+1*1000+1*11=1000000+11000...
1011+00.110100.1101->00.01101101+00.110101.0011->00.10011110+00.000000.1001->00.01001111+00.110101.0001->00.10001111因?yàn)閄和Y異號(hào),異號(hào)相乘為負(fù)所以X·Y=1.10001111...
換成十進(jìn)制,X=16+8+0+2+1=27Y=-(16+8+4+2+1)=31故X*Y=-837換成二進(jìn)制等于1100000101
例如數(shù)學(xué)上,(-1)=000000001+10000001=10000010,換算成十進(jìn)制為-2。顯然出錯(cuò)了。所以原碼的符號(hào)位不能直接參與運(yùn)算,必須和其他位分開,這就增加了硬件的開銷和復(fù)雜性。原碼一位乘法中,符號(hào)位與數(shù)值位是分開進(jìn)行計(jì)算的。運(yùn)...