-1
因为,
1111 1111 1111 1111 1111 1111 1111 1111
表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.这中要和负数在计算机中的表示方法有关.
把上面的数,除符号外变反加1,就得到了实际的值.
因为,
1111 1111 1111 1111 1111 1111 1111 1111
表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.这中要和负数在计算机中的表示方法有关.
把上面的数,除符号外变反加1,就得到了实际的值.
java编程思想上是这么说的:"它使用了'零扩展':无论正负,都在高位插入0。"那
int x = –1;
x = x >> 32;结果x的值又是多少?
x = x >>> 32;按照">>>"的定义,结果明明就是0呀,怎么可能是-1呢。
x = x >>> 0;
那就是没有移了,x自然还是-1
****************************************
-1
因为,
1111 1111 1111 1111 1111 1111 1111 1111
表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.
****************************************
这是错误的。我觉得。
-1
因为,
1111 1111 1111 1111 1111 1111 1111 1111
表示的是-1,而>>>后,用符号位,来补空位,移位后的值,还是原来的值.
****************************************上一段是不对,前面那一段英文已说明了什么是正确的。
:)
例:
int x=2;
x>>>34相当于, x>>>2,这个子2就是34 mod 32来的。
x>>32------x>>0明白否?
x = x >>> 32;1111 1111 1111 1111 1111 1111 1111 1111
表示的是-1,而>>>后,用0来补空位(因为是无符号右移),移位后的值
0000 0000 0000 0000 0000 0000 0000 0000
是0.这么解释有什么错误呢?