DEV Community

Neelakandan R
Neelakandan R

Posted on

Java Challenge: Can You Explain This Bitwise + Recursive Arithmetic Program?

Given the following Java class containing four custom methods — findsum(), findsub(), multi(), and divide() — can you explain how each method works internally without using standard arithmetic operators?

package Afternoon; public class oper { public static void main(String[] args) { findsum(4, 2); findsub(10, 20); System.out.println("multi :"+multi(5, 7)); divide(100, 8); } private static void divide(int a, int b) { int bal = 0; while (a >= b) { a = a - b; bal++; } System.out.println("quotient :" + bal + " " + "reminder :" + a); } private static int multi(int i, int j) { if (j == 0) { return 0; } return i + multi(i, j - 1); } private static void findsub(int i, int j) { int total = i + (~j + 1); System.out.println("sub"+total); } private static void findsum(int a, int b) { while (b != 0) { int carry = a & b;// 0100 & 0010=0000 a = a ^ b;// 0100 & 0010=0110 b = carry << 1;// 0000 } System.out.println("add :"+a); } } 
Enter fullscreen mode Exit fullscreen mode

Output:
add :6
sub-10
multi :35
quotient :12 reminder :4

Top comments (2)

Collapse
 
ggs_gmsk profile image
Gowtham Sankar Gunasekaran • Edited

Hello neelakandan_ravi,

All methods avoid +, -, *, / operators explicitly.

Bitwise operations (&, |, ^, ~, <<) handle binary representations.

Recursion and loops replace direct arithmetic.

Collapse
 
neelakandan_ravi profile image
Neelakandan R

Thank you! Yes, that's exactly the concept I explored. It’s fun how we can achieve arithmetic without using traditional operators. Appreciate your comment.