How to write....**

• 08-06-2008, 01:53 PM
krichait
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
• 08-06-2008, 02:19 PM
Norm
Is this an assignment? Have you written some code you need help with?
• 08-06-2008, 02:38 PM
krichait
Quote:

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...
• 08-06-2008, 05:28 PM
mtv134
I can see ur using recursing
where is the break condition?
• 08-06-2008, 06:15 PM
Norm
Here's cod to do it bit by bit.

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       while(mask != 0) {         int ta = a & mask;                  // get next bit to add         int tb = b & mask;                  // get next bit to add         int bsum = bitAdd2(ta, tb, mask);  // add the bits & set carry         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);         mask = mask << 1;                  // move to next bit       } // end while() thru bits       if(carry > 0) System.err.println(">>>>>>>>>>>>losing carry");       return sum;   } // end add2()   //----------------------------------------------------------   // 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;       }   } // end bitAdd2()   //------------------------------------------------   // Test the above   public static void main(String[] args) {       // The numbers to add       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       int sum = add2(x, y);       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 }```
• 08-07-2008, 08:44 AM
Niveditha
Wow norm...
Good job...
• 08-07-2008, 10:00 AM
krichait
Wonderful.... NORM....

Thanks vey much.............
• 08-07-2008, 01:56 PM
Norm
I don't see how you could answer this question in a interview. My version took a couple of hours.
• 08-07-2008, 02:06 PM
mtv134
Nice work Norm
• 08-07-2008, 02:09 PM
krichait
Great Effort you have put in....
Quote:

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..........