與補(bǔ)碼乘法類似,也可以用補(bǔ)碼直接完成除法運(yùn)算,即用 [X]補(bǔ)/[Y] 補(bǔ) 直接求得[X/Y]補(bǔ) 。補(bǔ)碼除法的規(guī)則比原碼除法的規(guī)則復(fù)雜一些。當(dāng)除數(shù)和被除數(shù)用補(bǔ)表示時(shí),判別是否夠除,就不再是簡單地用被除數(shù)(余數(shù))減去除數(shù),而是要比較它們的絕對值的大小。因此,若二數(shù)同符號,要用減法,若異號,則要用加法,請注意,這樣求出來的商是反碼形式的。
我們不準(zhǔn)備對此進(jìn)行更多地討論,可以給出其運(yùn)算規(guī)則如下:
(1) 開始時(shí),求第一位商,如果被除數(shù)與除數(shù)同號, 用被除數(shù)減去除數(shù),若二數(shù)異號,則用被除數(shù)加上除數(shù)的辦法處理。
(2) 運(yùn)算過程中確定商的值,若余數(shù)與除數(shù)同號,上商1,左移一位后下次用余數(shù)減除數(shù)操作求商,若余數(shù)與除數(shù)異號,上商0,左移一位后下次用余數(shù)加除數(shù)操作求商。
(3) 商的符號,是在第一次求商試算時(shí)求出的,若定點(diǎn)除不溢出,得到的就是正確的符號位的值。
(4) 商的修正問題。在對精度要求不高時(shí),將商的最低一位恒置1。最大誤差為 | 2-n |。
若對商的精度要求較高,可對n位數(shù)求商n+1次,按得到的不同結(jié)果對商進(jìn)行修正。當(dāng)商為負(fù)時(shí),要在商的最低一位加1,從反碼的結(jié)果得到商的正確的補(bǔ)碼值。
下面給出補(bǔ)碼除法執(zhí)行運(yùn)算過程的一個(gè)實(shí)例。
假定 [X]補(bǔ) =1 0111 , [Y]補(bǔ) = 0 1101, 則 [-Y]補(bǔ) = 1 0011
再求下去,可得下一位商并舍入;也可以不執(zhí)行最后一步求商操作,而直接用在最低位上商1來結(jié)束除運(yùn)算過程。
除法運(yùn)算也有快速除運(yùn)算的各種方案,如一次求得1位或多位商的跳0跳1法,專用的高速除法裝置,用快速乘法器完成快速除運(yùn)算等。由于在程序中,除法指令的使用頻度不高,因此一般機(jī)器中較少采用快速除法方案。
評論
查看更多