以下代码运行的结果:

public static void main(String[] args) {
		int a = 8, b = 3;
		System.out.println(a>>>b);
		System.out.println(a>>>b | 2); 
	}

答案为:

1 
3

为了更好理解计算过程,我们可以这样修改代码:

		public static void main(String[] args) {
        int a = 8, b = 3;
        System.out.println(a >>> b | 2);
        System.out.println(toBinaryString(a >>> b));
        System.out.println(toBinaryString(2));
    }

    public static String toBinaryString(int num) {
        String numStr = Integer.toBinaryString(num);
        if(num >= 0) {
            StringBuffer sb = new StringBuffer();
            for(int i = 0; i < 32 - numStr.length(); i++) {
                sb.append(0);
            }
            return sb.append(numStr).toString();
        } else {
            return numStr;
        }
    }

输出结果为:

3
00000000000000000000000000000001
00000000000000000000000000000010

符号“|”是或运算,只有当两个数同时为0时才为0,其它情况为1。“...01”和“...10”的或运算就为“...11”,转为十进制就是3。

最后修改于 2019-03-28 11:06:50
上一篇