1. Member
Join Date
Aug 2008
Posts
4
Rep Power
0

## How to write....**

write a program of any adding or subtracting or multiplication "WITHOUT"
using Arithmetic Operators, Union operators.. Asked in .....CTS....

hint: can use Bitwise operators

2. Is this an assignment? Have you written some code you need help with?

3. Member
Join Date
Aug 2008
Posts
4
Rep Power
0
Originally Posted by Norm
Is this an assignment? Have you written some code you need help with?
Thanks for response... this is not an assignment .. but asked in an interview... . I tried .. using bitwise operators...

{
return add((a & b) << 1, a ^ b));
}

but actually it is not working...

4. Member
Join Date
Aug 2008
Posts
22
Rep Power
0
I can see ur using recursing
where is the break condition?

5. Here's cod to do it bit by bit.

Java Code:
```// Add two ints using bitwise operators

public class ArithWithBitOps {
//------------------------------------------------------------------------------
// Second attempt  -  Go bit by bit right to left doing binary arith
static int carry = 0;  // c=1 for 1+1

static int add2(int a, int b) {
int sum = 0;                     // get sum here
int mask = 1;                    // shifting mask used to test each bit

int ta = a & mask;                  // get next bit to add
int tb = b & mask;                  // get next bit to add
if(Testing) System.out.print("ta=" + ta + ", tb=" + tb + ", bsum=" + bsum
+ ", carry=" + carry + ", b4sum=" + sum);
sum = (sum | bsum);                 // OR in the results
if(Testing) System.out.println(", aft sum=" + sum);
} // end while() thru bits

if(carry > 0) System.err.println(">>>>>>>>>>>>losing carry");
return sum;

//----------------------------------------------------------
// Add two selected  bits in x and y & set carry if carry
static int bitAdd2(int x, int y, int bsel) {
//      System.out.println("bitAdd2 of " + x + " " + y);
int tx = x & bsel;
int ty = y & bsel;
if(carry == 1) {  // Have carry ?
if((tx & ty) != 0) {
carry = 1;
return bsel;    // 1 + 1 + c=1 -> 1 + c=1
}else if((tx ^ ty) != 0) {
carry = 1;
return 0;      // 1 + 0 + c=1 -> 0 + c=1
}else {
carry = 0;
return bsel;   // 0 + 0 + c=1 -> 1 + c=0
}
}else if (carry == 0) { // no carry
if((tx & ty) > 0) {
carry = 1;
return 0;      // 1 + 1 + c=0 -> 0 + c=1
}else if((tx ^ ty) != 0) {
carry = 0;
return bsel;   // 1 + 0 + c=0 -> 1 + c=0
}else {
System.out.println("(tx ^ ty)=" + (tx ^ ty));
carry = 0;
return 0;      // 0 + 0 + c=0 -> 0 + c=0
}
}else {
System.err.println("Invalid carry= " + carry);
return 0;
}

//------------------------------------------------
// Test the above
public static void main(String[] args) {
int x = -24;
int y = 15;

if(Testing) System.out.println("Max int=" + Integer.MAX_VALUE   //Max int=2147483647
+ " " + Integer.toHexString(-2)  //-2=fffffffe
+ " " + 0x80000000);    //-2147483648
System.out.println("Final sum= " + sum + " vs " + (x + y) + "    " + Integer.toHexString(sum));
//Final sum= -9 vs -9    fffffff7
} // end main()

static final boolean Testing = false;  // global flag for debug output
}```
Last edited by Norm; 08-06-2008 at 08:11 PM.

6. Wow norm...
Good job...

7. Member
Join Date
Aug 2008
Posts
4
Rep Power
0
Wonderful.... NORM....

Thanks vey much.............

8. I don't see how you could answer this question in a interview. My version took a couple of hours.

9. Member
Join Date
Aug 2008
Posts
22
Rep Power
0
Nice work Norm

10. Member
Join Date
Aug 2008
Posts
4
Rep Power
0

## Great Effort you have put in....

Originally Posted by Norm
I don't see how you could answer this question in a interview. My version took a couple of hours.
It was asked to my friend.. in Cognizant Technology ...Company... they just give him to slove this problem in 45 minutes... but he couldn't... if he does the problem he got he job....

Any Way.......... I got the code... but it is really unusefull to write such a code for simple addition....

Thanks a lot..........

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•