位运算:是直接对整数在内存中的二进制位进行操作,效率高。

位运算的分类:

  ~ 按位取反
  ^ 异或
  | 按位或
  & 按位与
  && 逻辑与
  || 逻辑或
  ! 逻辑非
  << 左移
  >> 右移
  >>> 右移 0填充

为了方便,以下二进制位以8位。

位与&:是参与运算的两数各对应的二进位相与,
有0为0,全1为1.

1&2=0
0000 0001 ——1
0000 0010 ——2
———
0000 0000 ——0

 

位或|:是参与运算的两数各对应的二进位相或,
有1为1,全0为0.

1|3=3
0000 0001 ——1
0000 0011 ——3
———
0000 0011 ——3

异或^:是参与运算的两数各对应的二进位相异或,
当两对应的二进位相异时,结果为1;相同时,结果为0.

1^5=8
0000 0001 ——1
0000 0101 ——5
———-
0000 0100 ——8

以上三种无论前者是真还是假,都要判断第二个数。

 

逻辑与&&:
0&&0=0
0&&1=0
1&&0=0
1&&1=0

前者为假时,不用判断后者。

逻辑或||:
0||0=0
0||1=1
1||0=1
1||1=1

前者为真时,不用判断后者。

逻辑非!:
!0=1
!1=0

左移<<:左边的位被挤掉。对于右边移出的空位,则空位补0.其值相当于乘2.

3<<2=12

0 0 1 1 —–3
1 1 x x —–x为0,即为 1 1 0 0
——–
1 1 0 0 —–12

右移>>:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0;
若为负数,可能补0或补1(符号位),这取决于所用的计算机系统。
其值相当于除以2.

12>>1=6

1 1 0 0 —–12
x 1 1 0 —–x为0,即为0 1 1 0
——–
0 1 1 0 —–6

按位取反~:

~6=9

0 1 1 0 ——6
1 0 0 1 ——9

1和0互换

运算符>>>:右边的位被挤掉。对于左边移出的空位一概补上0;

版权声明:本文为gd-luojialin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gd-luojialin/p/6635609.html