二進(jìn)制乘法原理: 就是左移(進(jìn)位)8次,每次最高位為1則加進(jìn)去,8位移完就得出乘積了 實(shí)際上和我們做10進(jìn)制的乘法是一樣的,只不過(guò)這里的進(jìn)制是2罷了 比如5×6,轉(zhuǎn)成二進(jìn)制就是0101×0110 十進(jìn)制乘法大家都會(huì)做,公式就是 我們他當(dāng)成十進(jìn)制101×110來(lái)計(jì)算下看看 4位乘積=被乘數(shù)×千位被+被乘數(shù)×百位+被乘數(shù)×十位+被乘數(shù)×個(gè)位 既0101×0110=101×0000+101×100+101×10+101×0 變化下: 4位乘積=被乘數(shù)×千位數(shù)×1000+被乘數(shù)×百位數(shù)×100+被乘數(shù)×10位數(shù)×10+被乘數(shù)×個(gè)位數(shù) 既0101×0110=101×(0×1000)+101×(1×100) +101×(1×10)+101×0 再變化下: 4位乘積=被乘數(shù)×千位數(shù)×10×10×10+被乘數(shù)×百位數(shù)×10×10+被乘數(shù)×10位數(shù)×10+被乘數(shù)×個(gè)位數(shù) 既0101×0110=101×(0×10×10×10)+101×(1×10×10)+101×(1×10)+101×0 =(((101×0)×10)+(101×1))×10+(101×1))×10+101×0 我們可以看到,實(shí)際上乘法結(jié)果就是被乘數(shù)乘以每一位乘以模(10)的N次方的累計(jì)和(其實(shí)左移位就是進(jìn)位啦,看得出來(lái)嗎?) 而換成2進(jìn)制的話很簡(jiǎn)單,把10讀成二進(jìn)制2就行了,結(jié)果還是: 4位乘積=被乘數(shù)×千位數(shù)×10×10×10+被乘數(shù)×百位數(shù)×10×10+被乘數(shù)×10位數(shù)×10+被乘數(shù)×個(gè)位數(shù) 既0101×0110=101×(0×10×10×10)+101×(1×10×10)+101×(1×10)+101×0 =(((101×0)×2)+(101×1))×2+(101×1))×2+101×0 由于乘2就是移位(進(jìn)位),把上面的公式中乘2換成左移位就行了 PS: 由于二進(jìn)制只有0和1,乘2可以用左移一位來(lái)實(shí)現(xiàn),也可以“自己加自己”來(lái)實(shí)現(xiàn)的,很多CPU的左移指令和“自己加自己”一樣 用軟件乘法要耗費(fèi)很多CPU時(shí)間,只要CPU有硬件乘法器,當(dāng)然是用硬件的啦,哪會(huì)快很多的 |
|
來(lái)自: zhangquanling > 《FPGA_混飯吃的》