位运算

任给一个int型的整数,要求写一个函数,打印输入它的32位的二进制形式,例如输入1,则打印的结果应该是:

00000000 00000000 00000000 00000001

如何实现这个函数?请看下面的代码:

public class Solution {
    public static void print(int num) {
        for (int i = 31; i >= 0; --i) {
            System.out.print((num&(1<<i)) == 0 ? '0' : '1');
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int num = 5;
        print(num);
    }
}

这段代码就可以实现上述效果。举个例子吧,如果num=5,我们知道5写成32位的形式就是:

00000000 00000000 00000000 00000101

现在,函数里面的for循环是从31开始,依次递减,一直到0的所有这些数,1分别要左移这些数。就是说,1先要左移31位,然后左移30位,...,最后左移1位,左移0位。

比如1左移2位,那么就是:

00000000 00000000 00000000 00000100

我们拿num,此时是5,与这个1左移2位后的数进行与运算,你会发现只有从右边数第3位的数字与完后还是1,其余全是0.

所以这时候就应该输出1,其余位置应该全是0.

posted @ 2023-01-12 18:52  EvanTheBoy  阅读(16)  评论(0编辑  收藏  举报