企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 运算符   位运算符效率很高,但是可读性不好。因为它是基于二进制的[**补码**]()直接运算的。 ##   1、左移:<<     **运算规则**:<< 几位,就乘以 2 的 几次方;二进制补码左移 n 位,右边补 0     Demo: >  System.out.println(4 << 3); //等价于4乘以2的3次方,4\*8=32 > > 4的二进制:0000 0100 >   4<<3: 0010 0000 (向左移动3位,左边补0) ##   2、右移:>>     **运算规则**:>> 几位,就除以 2 的几次方;二进制补码右移 n 位,左边补0还是1,看最高位     Demo: >  System.out.println(32 >>4); //等价于32除以2的4次方,32/16 =2 > > 32的二进制:0010 0000 >  32>>4 : 0000 0010 (向右移动4位,右边补位看最高位) > > System.out.println(-32 >>4);  //等价于-32除以2的4次方,-32/16 =-2 > > \-32的二进制: >   原码:1010 0000 >   反码:1101 1111 >   补码:1110 0000 >   -32>>4: 1111 1110 (向右移动4位,右边补最高位) >   补码:1111 1110 >   反码:1111 1101 >   原码:1000 0010 = -2 ##   3、无符号右移:>>>     **运算规则**:二进制补码右移n位,左边补0;对于负数来说,移完后,变为正数     Demo: > System.out.println(32 >>> 4);   //和>>一样,左边补0 > >   32的二进制:0010 0000 >   32>>4:        0000 0010 > > System.out.println(-32 >>> 4);   > >   -32的二进制: >     原码:1000 0000 0000 0000 0000 0000 0010 0000 >     反码:1111  1111  1111  1111 1111  1111  1101 1111 >     补码:1111  1111  1111  1111 1111  1111  1110 0000 > >   -32>>>4: 0000 1111 1111 1111 1111 1111 1111 1110  >     最高位是0,是正数 | 类别 | 操作符 | 关联性 | | --- | --- | --- | | 后缀 | () \[\] . (点操作符) | 左到右 | | 一元 | expr++ expr-- | 从左到右 | | 一元 | ++expr --expr + - ~ ! | 从右到左 | | 乘性  | \* /% | 左到右 | | 加性  | \+ - | 左到右 | | 移位  | \>> >>>  <<  | 左到右 | | 关系  | \> >= < <=  | 左到右 | | 相等  | \==  != | 左到右 | | 按位与 | & | 左到右 | | 按位异或 | ^ | 左到右 | | 按位或 | ![](https://img.kancloud.cn/59/95/59958901ef58cbb756ac352a220d17c9_17x22.png) | 左到右 | | 逻辑与 | && | 左到右 | | 逻辑或 |![](https://img.kancloud.cn/fa/f7/faf7ab8e2f95d642be6ebf929fa27bcf_29x32.png) | | 左到右 | | 条件 | ?: | 从右到左 | | 赋值 | \= + = - = \* = / =%= >> = << =&= ^ = | = | 从右到左 | | 逗号 | , | 左到右 |