Just do it
专注做自己的事,有想做的事就去做好了
题目分析
输入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");
	}
}
posted on 2025-09-23 17:57  Ireck  阅读(16)  评论(0)    收藏  举报