>>:带标记右移。正数右移高位补0,负数右移高位补1。比方:
4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。
>>>:无标记右移。无论是正数照样负数,高位统统补0。 (引荐进修:java课程)
关于正数而言,>>和>>>没区分。
关于负数而言,-2 >>> 1,结果是2147483647(Integer.MAX_VALUE),-1 >>> 1,结果是2147483647(Integer.MAX_VALUE)。
以下代码能够推断两个数的标记是不是相称
return ((a >> 31) ^ (b >> 31)) == 0;
比方:
-12 >> 3 即带标记右移3位,结果是:1111 1111 1111 1111 1111 1111 1111 1110,十进制为: -2;
-12 >>> 3 就是右移三位,前面补零,为:0001 1111 1111 1111 1111 1111 1111 1110,十进制为:536870910。
以上就是java>>>和>>区分的细致内容,更多请关注ki4网别的相干文章!