题目分析
输入1 -> 输出 00000000000000000000000000000001输入2 -> 输出 00000000000000000000000000000010
输入3 -> 输出 00000000000000000000000000000011
输入4 -> 输出 00000000000000000000000000000100
输入5 -> 输出 00000000000000000000000000000101
这题主要考察的是对'&'运算符的灵活运用。
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
我们知道一个int整数在计算机中是一个32位的2进制整数,如果对这个32位的2进制数依次&1,如果得到的结果等于1,则代表该位上的值为1,反之则为0.
// 输出32位2进制
public static void printBinaryNum(int num) {
// 一共32位
for (int i = 31; i >= 0; i--) {
// 每次对1左移1位
// 第一次 00000000000000000000000000000001
// 第二次 00000000000000000000000000000010
// 第三次 00000000000000000000000000000100
// 因为其余位都是0,所以&的结果必然是0,我们只需要判断1的所在位与输入数值&运算,如果是0则表示输入的数值的二进制的第i位是0.
System.out.print((num & (1 << i)) == 0 ? "0" : "1");
}
}
浙公网安备 33010602011771号