Java基础--位运算符

北慕城南 提交于 2020-02-07 05:54:57

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:代码地址

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!