int i = -16;
i = i >>> 2;为什么会得出 i = 1073741820; 究竟是怎么计算的?

解决方案 »

  1.   

    >>> 是不带符号的位运算,也就是说最左边使用“0”来填充,而 >> 是带符号位的右移,
    每向右移一位,左边就使用最高的符号位来填充。像 -16,的二进制位表示如下:11111111111111111111111111110000,执行 -16 >>> 2 就是:
    00111111111111111111111111111100,左边填充两个“0”,值为 1073741820,若是 -16 >> 2 就成了:
    11111111111111111111111111111100,左边填充两个符号位“1”,值为 -4。
      

  2.   

    楼上的老大有没有 相关的资料给小弟发一份 ,我的 email
    [email protected]
    我 看到 Java 源码 中的 out.write((v >>> 8) & 0xFF);这个方法 不明白