public int add(char[] num1,char[] num2){
        int index1 = num1.length -1;
        int index2 = num2.length -1;
        int carry = 0;
        int result = 0;
        int index = 0;
        while(index1 >= 0 && index2 >= 0){
            int r1 = num1[index1] - '0';
            int r2 = num2[index2] - '0';
            result = result | (r1^r2^carry)<<index;
            index1--;
            index2--;
            index++;
            carry = r1 & carry | r2 & carry | r1 & r2;
        }
        while(index1 >= 0){
            int r1 = num1[index1] - '0';
            result = result | (r1^carry)<<index;
            index1--;
            index++;
            carry = r1 & carry;
        }
        while(index2 >= 0){
            int r2 = num1[index2] - '0';
            result = result | (r2^carry)<<index;
            index2--;
            index++;
            carry = r2 & carry;
        }
        return result;
    }
http://www.geeksforgeeks.org/add-two-bit-strings/
http://www.geeksforgeeks.org/binary-representation-of-a-given-number/
http://www.geeksforgeeks.org/add-two-numbers-without-using-arithmetic-operators/
src/com/interview/bits/AddTwoNumberInBinaryRepresentation.java