This is a Java Program to implement Booth Algorithm. This is a program to compute product of two numbers by using Booth’s Algorithm. This program is implemented for multiplying numbers in the range -7 to 7. However same principle can be extended to other numbers too.
Here is the source code of the Java program to implement Booth Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to Implement Booth Algorithm **/ import java.util.Scanner; /** Class Booth **/ public class Booth { public static Scanner s = new Scanner(System.in); /** Function to multiply **/ public int multiply(int n1, int n2) { int[] m = binary(n1); int[] m1 = binary(-n1); int[] r = binary(n2); int[] A = new int[9]; int[] S = new int[9]; int[] P = new int[9]; for (int i = 0; i < 4; i++) { A[i] = m[i]; S[i] = m1[i]; P[i + 4] = r[i]; } display(A, 'A'); display(S, 'S'); display(P, 'P'); System.out.println(); for (int i = 0; i < 4; i++) { if (P[7] == 0 && P[8] == 0); // do nothing else if (P[7] == 1 && P[8] == 0) add(P, S); else if (P[7] == 0 && P[8] == 1) add(P, A); else if (P[7] == 1 && P[8] == 1); // do nothing rightShift(P); display(P, 'P'); } return getDecimal(P); } /** Function to get Decimal equivalent of P **/ public int getDecimal(int[] B) { int p = 0; int t = 1; for (int i = 7; i >= 0; i--, t *= 2) p += (B[i] * t); if (p > 64) p = -(256 - p); return p; } /** Function to right shift array **/ public void rightShift(int[] A) { for (int i = 8; i >= 1; i--) A[i] = A[i - 1]; } /** Function to add two binary arrays **/ public void add(int[] A, int[] B) { int carry = 0; for (int i = 8; i >= 0; i--) { int temp = A[i] + B[i] + carry; A[i] = temp % 2; carry = temp / 2; } } /** Function to get binary of a number **/ public int[] binary(int n) { int[] bin = new int[4]; int ctr = 3; int num = n; /** for negative numbers 2 complment **/ if (n < 0) num = 16 + n; while (num != 0) { bin[ctr--] = num % 2; num /= 2; } return bin; } /** Function to print array **/ public void display(int[] P, char ch) { System.out.print("\n"+ ch +" : "); for (int i = 0; i < P.length; i++) { if (i == 4) System.out.print(" "); if (i == 8) System.out.print(" "); System.out.print(P[i]); } } /** Main function **/ public static void main (String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Booth Algorithm Test\n"); /** Make an object of Booth class **/ Booth b = new Booth(); /** Accept two integers **/ System.out.println("Enter two integer numbers\n"); int n1 = scan.nextInt(); int n2 = scan.nextInt(); int result = b.multiply(n1, n2); System.out.println("\n\nResult : "+ n1 +" * "+ n2 +" = "+ result); } }
Booth Algorithm Test Enter two integer numbers 7 -7 A : 0111 0000 0 S : 1001 0000 0 P : 0000 1001 0 P : 1100 1100 1 P : 0001 1110 0 P : 0000 1111 0 P : 1100 1111 1 Result : 7 * -7 = -49
Related posts:
Interface trong Java 8 – Default method và Static method
Chuyển đổi giữa các kiểu dữ liệu trong Java
Cài đặt và sử dụng Swagger UI
Simple Single Sign-On with Spring Security OAuth2
Tổng quan về ngôn ngữ lập trình java
Java Program to Implement Sorting of Less than 100 Numbers in O(n) Complexity
Java Program to Implement Fenwick Tree
Guide to the Synchronized Keyword in Java
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
@Order in Spring
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Prevent Brute Force Authentication Attempts with Spring Security
Hướng dẫn sử dụng String Format trong Java
Java Program to Implement Radix Sort
Map Serialization and Deserialization with Jackson
Guide to Java 8 groupingBy Collector
Giới thiệu java.io.tmpdir
Enum trong java
Java Program to Implement Fermat Primality Test Algorithm
Java Program to Implement K Way Merge Algorithm
Java Program to Implement the RSA Algorithm
Create a Custom Auto-Configuration with Spring Boot
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Toán tử trong java
StringBuilder vs StringBuffer in Java
New Features in Java 11
Java Program to Permute All Letters of an Input String
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Java Program to Find the Connected Components of an UnDirected Graph
Java – Rename or Move a File
Java 8 and Infinite Streams
Biến trong java