-
<<左移运算符
格式是:value << num
左移的运算规则是:无论value是正数还是负数,都
丢弃最高位,最低位补0
-
>>右移运算符(有符号右移)
格式是:value >> num
右移的运算规则是:低位直接舍弃,如果value是正数,高位补0,是负数,高位补1
举个例子:
-
-4的补码是 1111 1100 (写程序的话int应该是32位的,这里为了简单说明原理,只取8位)
-
先右移两位 -- 1111 11
-
高位补1 -- 1111 1111
-
转化为10进制 -- -1
-
>>>无符号右移
格式是:value >>> num
右移的运算规则是:低位直接舍弃,高位直接补0
举个例子:
-
-15的补码是 -- 1111 1111 1111 1111 1111 1111 1111 1111 0001
-
先右移两位 -- 1111 1111 1111 1111 1111 1111 1111 1100
-
高位补0 -- 0011 1111 1111 1111 1111 1111 1111 1100
-
转化为10进制 1073741820
下面是在IDEA里跑的结果,给大家参考:
image image