Binary difference checker My code needs to take two ints and then check those ints to see if their binary representations have any differences. The function convertBits returns the number of differences between the two binary forms of the ints.

For example, you can change 31 to 14 by flipping the 4th and 0th bit:


31:  0 0 0 1 1 1 1 1
14:  0 0 0 0 1 1 1 0
---  ---------------
bit  7 6 5 4 3 2 1 0



Thus 31 and 14 should return 2.

My code works, but it is failing the time test. In short, it needs to be more efficient. I welcome any suggestions as to how to do this.

    import java.util.ArrayList;

    public class BinaryChecker {
        public static void main(String[] args){
             b call = new b();
             System.out.println(call.convertBits(31, 14));
        }

     public static int convertBits(int a, int b){
         int counter = 0;

         String A = Integer.toBinaryString(a);
         String B = Integer.toBinaryString(b);

         System.out.println("The binary value of " + a + " " + "is " +   A +"." + "The binary value of " + b + " " + "is " + B);
         //add to arraylist 1 and 2

         ArrayList&lt;Character&gt; String1 = new ArrayList&lt;Character&gt;();

         ArrayList&lt;Character&gt; String2 = new ArrayList&lt;Character&gt;();
         int size = 0;

         for(int i = 0; i &lt; A.length(); i++){
             char Aa = A.charAt(i);
             String1.add(Aa);
         }
         for(int x = 0; x &lt; B.length(); x++){
             char Bb = B.charAt(x);
             String2.add(Bb);
         }
         //check if String1 is 8 chars long and add 0 to beginning if not
         while (String1.size() != 8){
             String1.add(0, '0');
         }
         while (String2.size() != 8){
             String2.add(0, '0');
         }


         for (int i =0; i &lt; String1.size(); i++){
             char biteA = String1.get(i);
             char biteB = String2.get(i);
             if(biteA != biteB){
                 counter++;
             }
         }


         return counter;
     }
}
There's no need to roll your own: the library support is there.

public static int convertBits(int a, int b) {
    return Integer.bitCount(a ^ b);
}


For what it's worth, I don't think convertBits is a very descriptive name for the method. I'd suggest something like countBitDifferences.