Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class BoothsAlgorithm {
- int[] decimatToBinary(int a) {
- int[] binary = new int[5];
- int i = binary.length - 1;
- if (a < 0)
- a = 32 + a;
- while (a != 0) {
- binary[i--] = a % 2;
- a /= 2;
- }
- return binary;
- }
- int[] add(int AQ[], int[] b) {
- int carry = 0;
- for (int i = 4; i >= 0; i--) {
- int temp = 0;
- temp = AQ[i] + b[i] + carry;
- AQ[i] = temp % 2;
- carry = temp / 2;
- }
- return AQ;
- }
- int[] shift(int AQ[]) {
- for (int i = 10; i >= 1; i--)
- AQ[i] = AQ[i - 1];
- return AQ;
- }
- void display(int[] AQ, int[] b) {
- for (int i = 0; i < 11; i++) {
- if (i == 5) {
- System.out.print("\t" + AQ[i]);
- continue;
- }
- if (i == 10) {
- System.out.print("\t" + AQ[i]);
- continue;
- }
- System.out.print(AQ[i]);
- }
- System.out.print("\t");
- for (int i = 0; i <= 4; i++) {
- System.out.print(b[i]);
- }
- }
- void multiply(int a[], int b[], int c[]) {
- int AQ[] = new int[11];
- for (int i = 0; i <= 4; i++)
- AQ[i + 5] = a[i];
- for (int i = 0; i <= 4; i++) {
- if (AQ[9] == 0 && AQ[10] == 1) {
- AQ = add(AQ, b);
- display(AQ, b);
- System.out.print("\t A + M\n");
- } else if (AQ[9] == 1 && AQ[10] == 0) {
- AQ = add(AQ, c);
- display(AQ, b);
- System.out.print("\t A - M\n");
- }
- AQ = shift(AQ);
- display(AQ, b);
- System.out.print("\t SHIFT\n");
- }
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner (System.in);
- BoothsAlgorithm booth = new BoothsAlgorithm();
- System.out.println("ENTER TWO NUMBERS : ");
- int x = sc.nextInt();
- int y = sc.nextInt();
- int a[] = booth.decimatToBinary(x);
- int b[] = booth.decimatToBinary(y);
- int c[] = booth.decimatToBinary(-y);
- System.out.println(Arrays.toString(a) + "\n" + Arrays.toString(b)
- + "\n" + Arrays.toString(c));
- System.out.println("Ac\tQ\tQ-1\tM");
- booth.multiply(a, b, c);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment