Sunday, October 21, 2012

BitManipulation5

Q5. Write a function to swap a number in place without temporary variables.
Answer:
  • It is not possible to write a function to swap primitive variables in Java, so I have created a class to wrap the int primitive.
class IntNumber {
    public int data;

    public IntNumber(int n) {
        this.data = n;
    }

    public String toString() {
        return "" + this.data;
    }
}

public class BitManipulation5 {
    public static void swap(IntNumber a, IntNumber b) {
        a.data = a.data ^ b.data;
        b.data = a.data ^ b.data;
        a.data = a.data ^ b.data;
    }

    public static void main(String[] args) {
        IntNumber a = new IntNumber(2);
        IntNumber b = new IntNumber(3);

        System.out.println("Before swapping a = " + a + " b = " + b);
        swap(a, b);
        System.out.println("After  swapping a = " + a + " b = " + b);
    }
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.