Kabin algoritması, sırasıyla 2'nin tümleyenindeki iki işaretli ikili tamsayıyı çarpmamıza olanak sağlayan bir çarpma algoritmasıdır. Ayrıca çarpma işleminin performansını hızlandırmak için de kullanılır. Aynı zamanda çok verimlidir. Çarpandaki 0'ların dizi bitleri üzerinde çalışır, ek bit gerektirmez, yalnızca en sağdaki dize bitlerini ve 1'lerden oluşan bir diziyi çarpan bit ağırlığı 2'de kaydırırk2 kiloya kadarMşu şekilde düşünülebilir 2k+ 1- 2M .
Booth Algoritmasının resimli gösterimi aşağıdadır:
Yukarıdaki akış şemasında başlangıçta AC Ve Qn + 1 bitler 0'a ayarlanmıştır ve SC toplam bit setini temsil eden bir sıra sayacıdır N, çarpandaki bit sayısına eşittir. Var BR temsil eden bitleri çarpın, ve QR şunu temsil eder: çarpan bitleri . Bundan sonra çarpanın Q olarak iki bitiyle karşılaştık.Nve Qn + 1burada Qn, QR'nin son bitini temsil eder ve Qn + 1Qn'nin 1 artırılmış bitini temsil eder. Çarpanın iki bitinin 10'a eşit olduğunu varsayalım; bu, çarpanı AC akümülatöründeki kısmi çarpımdan çıkarmamız ve ardından aritmetik kaydırma işlemini (ashr) gerçekleştirmemiz gerektiği anlamına gelir. Çarpanlardan ikisi 01'e eşitse, AC akümülatöründeki kısmi çarpıma çarpanı toplamamız ve ardından aritmetik kaydırma işlemini yapmamız gerektiği anlamına gelir ( Aşr ), içermek Qn + 1 . Aritmetik kaydırma işlemi, Booth'un algoritmasında AC ve QR bitlerini birer birer sağa kaydırmak ve AC'deki işaret bitini değiştirmeden bırakmak için kullanılır. Ve dizi sayacı, hesaplama döngüsü tekrarlanana kadar bit sayısına (n) eşit olacak şekilde sürekli olarak azaltılır.
Stand Algoritması'da çalışıyor
- Çarpan ve Çarpan ikili bitlerini sırasıyla M ve Q olarak ayarlayın.
- Başlangıçta AC ve Q'yu ayarladık.n + 1değeri 0 olarak kaydeder.
- SC, Çarpan bit sayısını (Q) temsil eder ve bit sayısına (n) eşit olana kadar sürekli olarak azaltılan veya 0'a ulaşan bir sıra sayacıdır.
- Bir Qn, Q'nun son bitini temsil eder ve Qn+1Qn'nin bitinin 1 artırıldığını gösterir.
- Kabin algoritmasının her döngüsünde QNve Qn + 1bitler aşağıdaki parametrelerde şu şekilde kontrol edilecektir:
- İki bit Q olduğundaNve Qn + 100 veya 11 ise, AC kısmi çarpımına aritmetik sağa kaydırma işlemini (ashr) yaparız. Ve Qn ve Q'nun bitlerin + 11 bit artırılır.
- Eğer Q'nun bitleriNve Qn + 101 olarak gösterildiğinde, çarpan bitler (M) AC'ye (Akümülatör kaydı) eklenecektir. Daha sonra AC ve QR bitlerine 1’er sağa kaydırma işlemini gerçekleştiriyoruz.
- Eğer Q'nun bitleriNve Qn + 110 olarak gösterildiğinde, çarpan bitler (M) AC'den (Akümülatör kaydı) çıkarılacaktır. Daha sonra AC ve QR bitlerine 1’er sağa kaydırma işlemini gerçekleştiriyoruz.
- Kabin algoritmasında n - 1 bitine ulaşana kadar işlem sürekli olarak devam eder.
- Çarpma ikili bitlerinin sonuçları AC ve QR kayıtlarında saklanacaktır.
Booth Algoritması'nda kullanılan iki yöntem vardır:
piton __isim__
1. RSC (Sağa Kaydırma Dairesel)
İkili sayının en sağdaki bitini kaydırır ve daha sonra ikili bitlerin başına eklenir.
2. RSA (Sağa Kaydırma Aritmetiği)
İki ikili biti toplar ve ardından sonucu 1 bitlik sağa kaydırır.
java program döngüsü
Örnek : 0100 + 0110 => 1010, ikili sayıyı ekledikten sonra her biti 1 sağa kaydırır ve sonucun ilk bitini yeni bitin başına koyar.
Örnek: Booth'un çarpma algoritmasını kullanarak 7 ve 3 sayılarını çarpın.
Yıllar . Burada 7 ve 3 olmak üzere iki sayımız var. Öncelikle 7 ve 3'ü 7 = (0111) ve 3 = (0011) gibi ikili sayılara dönüştürmemiz gerekiyor. Şimdi 7'yi (ikili 0111'de) çarpan (M) olarak ve 3'ü (ikili 0011'de) çarpan (Q) olarak ayarlayın. Ve SC (Sıra Sayısı) bit sayısını temsil eder ve burada 4 bitimiz var, dolayısıyla SC = 4'ü ayarlayın. Ayrıca kabin algoritmalarının yineleme döngülerinin sayısını gösterir ve ardından döngüler SC = SC - 1 kez çalıştırılır.
QN | Qn + 1 | M = (0111) M' + 1 = (1001) ve Çalışma | AC | Q | Qn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | İlk | 0000 | 0011 | 0 | 4 |
Çıkar (M' + 1) | 1001 | |||||
1001 | ||||||
Aritmetik Sağa Kaydırma işlemlerini gerçekleştirme (ashr) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Aritmetik Sağa Kaydırma işlemlerini gerçekleştirme (ashr) | 1110 | 0100 | 1 | 2 |
0 | 1 | Toplama (A + M) | 0111 | |||
0101 | 0100 | |||||
Aritmetik sağa kaydırma işlemini gerçekleştirin | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Aritmetik sağa kaydırma işlemini gerçekleştirin | 0001 | 0101 | 0 | 0 |
Booth Çarpma Algoritmasının sayısal örneği 7 x 3 = 21 ve 21'in ikili gösterimi 10101'dir. Burada sonucu ikili 00010101 olarak alıyoruz. Şimdi bunu (000010101) gibi ondalık sayıya dönüştürüyoruz.10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
Java sanal makinesi
Örnek: Booth'un çarpma algoritmasını kullanarak 23 ve -9 sayılarını çarpın.
Burada M = 23 = (010111) ve Q = -9 = (110111)
QNQn + 1 | M = 0 1 0 1 1 1 P' + 1 = 1 0 1 0 0 1 | AC | Q | Qn + 1SC |
---|---|---|---|---|
İlk olarak | 000000 | 110111 | 0 6 | |
1 0 | M'yi çıkar | 101001 | ||
101001 | ||||
Aritmetik sağa kaydırma işlemini gerçekleştirin | 110100 | 111011 | on beş | |
on bir | Aritmetik sağa kaydırma işlemini gerçekleştirin | 111010 | 011101 | 1 4 |
on bir | Aritmetik sağa kaydırma işlemini gerçekleştirin | 111101 | 001110 | 1 3 |
0 1 | Toplama (A + M) | 010111 | ||
010100 | ||||
Aritmetik sağa kaydırma işlemini gerçekleştirin | 001010 | 000111 | 0 2 | |
1 0 | M'yi çıkar | 101001 | ||
110011 | ||||
Aritmetik sağa kaydırma işlemini gerçekleştirin | 111001 | 100011 | on bir | |
on bir | Aritmetik sağa kaydırma işlemini gerçekleştirin | 111100 | 110001 | 1 0 |
Qn + 1 = 1, çıkışın negatif olduğu anlamına gelir.
Dolayısıyla 23 * -9 = 111100110001'in 2'ye tümleyeni => (00001100111)