位运算
任给一个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.