JavaScript 中按位的操作

/ Javascript前端 / 没有评论 / 594浏览

JavaScript中按位的操作,主要包括与、或、异或、按位取反、左移、右移。

按位与(&):

const a = 2, b = 3;
a & b = 2;

解释: 2的二进制为'10',3的二进制为'11',按位与:都为1时得1,出现0时得0,因此结果是'10',即2。

按位或(|):

const a = 6, b = 5;
a | b = 7;

解释:6='110',5='101',按位或,每一位二进制上进行或操作,得到'111',即7。

按位异或(^):

const a = 2, b = 4;
a ^ b = 6;

解释:2='10',4='100',结果为'110',即6

异或:相同为0,不同为1

异或运算有以下三个特质:

  1. 任何数和0做异或运算,结果仍然是原来的数,即 a^0=a。
  2. 任何数和其自身做异或运算,结果是 0,即 a^a=0。
  3. 异或运算满足交换律和结合律,即 a^b^a=b^a^a=b^(a^a)=b^0=b。

按位取反(~):

~2 = -3
~(-2) = 1
~0 = -1

按位取反:先+1再取相反数。

~1的步骤:

  1. 将1(原码)转二进制得到00000001
  2. 按位取反:11111110
  3. 发现符号位(最高位)为1,表示负数。将除符号位之外的其他数字取反:10000001
  4. 末位加1取其补码:100000010
  5. 转换回十进制:-2

左移(<<):

2 << 1 = 4
 
解释:2='10', 左移1位变为'100',即4

右移(>>):

2 >> 1 = 1
 
解释: 2='10', 右移一位变为'1',即1