-1
因为,
1111 1111 1111 1111 1111 1111 1111 1111
表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.这中要和负数在计算机中的表示方法有关.
把上面的数,除符号外变反加1,就得到了实际的值.

解决方案 »

  1.   

    这个">>>"是无符号右移运算符呀。
    java编程思想上是这么说的:"它使用了'零扩展':无论正负,都在高位插入0。"那
    int x = –1; 
    x = x >> 32;结果x的值又是多少?
      

  2.   

    shifting bits by a number geater than of eauqal to the number of bits in the result(eg.32 bits for an int)will cause the value to be shifted by the number mod the number of bits in the value.:)
      

  3.   

    飞马兄,我也看到了,书上也说是mod了,但解释不通呀。int x = –1; 
    x = x >>> 32;按照">>>"的定义,结果明明就是0呀,怎么可能是-1呢。
      

  4.   

    x = x >>> 32;就相当于
    x = x >>> 0;
    那就是没有移了,x自然还是-1
      

  5.   

    我还是感觉不对。
    ****************************************
    -1
    因为,
    1111 1111 1111 1111 1111 1111 1111 1111
    表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.
    ****************************************
    这是错误的。我觉得。
      

  6.   

    ****************************************
    -1
    因为,
    1111 1111 1111 1111 1111 1111 1111 1111
    表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.
    ****************************************上一段是不对,前面那一段英文已说明了什么是正确的。
    :)
      

  7.   

    不是,你仔细看一下那段英文。
    例:
    int x=2;
    x>>>34相当于, x>>>2,这个子2就是34 mod 32来的。
    x>>32------x>>0明白否?
      

  8.   

    int x = –1; 
    x = x >>> 32;1111 1111 1111 1111 1111 1111 1111 1111
    表示的是-1,而>>>后,用0来补空位(因为是无符号右移),移位后的值
    0000 0000 0000 0000 0000 0000 0000 0000
    是0.这么解释有什么错误呢?