import java.util.*;

public class Transform {
    public int calcCost(int A, int B) {
        int count = 0;

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

        int maxLength = Math.max(a.length(),b.length());
        a = String.format("%" + maxLength + "s", a).replace(' ', '0');
        b = String.format("%" + maxLength + "s", b).replace(' ', '0');
        for (int i = 0; i < maxLength; i++) {
            if (a.charAt(i)!= b.charAt(i)) {
                count++;
            }
        }
        return count;
    }
}

首先根据题目必须要了解到,转化必须是在二进制情况下进行操作,然后我们让他们的位数保持一直,缺少的部分用0补充,此时只需要判读同位置上有多少个数字不同即可