Java中>、>>、>>>三者有什么区别呢?
下文笔者讲述java中>、>>、>>>三个运算符之间的区别说明,如下诉讼hi
三者功能说明
大于号
“>”: 大于 其功能: 用于大小比较 if(a>b)…结果是boolean类型
两个大于号
">>:
在java中用于表示右移
<<(左移)和>>(右移)
左移运算:
将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0
右移运算:
将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或补符号位
由不同的机器而定
在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1,
具体的实现思路:
1.将数据转换为二进制
2.右移几位就去掉右边的几位数,左移几位就在右边加几个0
3.如:
14右移2位就是转成二进制变成1110,去掉右边的10,变成11,11转成十进制就是3
左移2位就是111000,转成十进制就是56
例:
int i=15;
i>>2的结果是3,移出的部分将被抛弃。
转为二进制的形式可能更好理解
0000 1111(15)右移2位的结果是0000 0011(3)
0001 1010(18)右移位的结果是0000 0011(3)。
三个大于号
”>>>":
无符号右移
叫逻辑右移
即若该数为正,则高位补0
当该数为负数,则右移后高位同样补0。
例:
res = 20 >> 2;
20的二进制为 0001 0100
右移2位后为 0000 0101
则 res =5;
res = -20 >> 2;
-20的二进制为 1110 1011,右移2位,此时高位补0
即 0011 1010,结果为 res = -5;
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


