文章目录
1:运算符分类?
- & (与)
- | (或)
- ^ (异或)
- ~(取反)
- << (左移)
- (>>) (向右移位)
- (>>>) 无符号右移
2:&(与) 运算符使用说明 ?
- 只有两个位上面都是 1 才是 1,其他为 0
- 特点:得到的结果的 max = 两个数中的最小值 比如 18 & 4 得到的值得肯定是 < = 4的;所以当需要把值控制在某个范围内时,可以使用该操作符。
3:I (或) 运算符使用说明 ?
- 只要有 一个位为1 ,则结果为1 。
4:^ (异或) 运算符使用说明 ?
- 只有两位数不同时才为 1。
- 特点:
-
与1相∧,使特定位翻转。
- 0010110 ^ 0011111 = 0001001
-
与0相∧,保留原值。
- 0010110 ^ 0000000= 0010110
-
交换两个值,不用临时变量
-
代码示例:
int a = 3, b = 4; a = a ^ b; b = b ^ a; a = a ^ b; System.out.println("a = " + a + ",b = " + b); //最后结果 a = 4 ,b = 3;
-
-
5:~ (取反) 运算符使用说明 ?
- 为1的变为 0,为 0 的为 1。
6:<< (向左移位) 运算符使用说明 ?
- 比如 5(101) << 1 , 5向左移动一位, 也就是 101(二进制) 整体向左移动一位,然后补 1 个 0。
- 公式:5 乘以 2的一次幂 = m(要移动的数)*2的n(位移数)次幂
- 数越来越大
7:>> (向右移位) 运算符使用说明 ?
- 如果该数(要移动的数)为正,则高位补0,若为负数,则高位补1
- 比如 5(101) >> 1 , 5向右移动一位, 也就是 101(二进制) 整体向右移动一位,然后砍 1 位数,也就是 10 (2) ;
- 公式:5/2的一次幂 = m/2的n次幂(取整数)
- 对于正数来说越来越小
8:无符号右移(>>>) 运算符使用说明 ?
- 和 >> 类似,只不过 >>> 会直接去掉移动的位数 ;
- 对于正数来说和 >> 一样效果,但对于负数来说,当移动 1 位 时,将达到一个正数最大值,之后移动到32位时,等于其本身的值。
9:代码地址
来源:CSDN
作者:萧凡君
链接:https://blog.csdn.net/qq_24067089/article/details/104195623