按位运算符

JavaScript按位运算符免费看

按位与运算符、按位或运算符、按位异或运算符、按位非运算符、右移运算符、左移运算符

2020-06-05侠课岛    基础入门       

前端/前端必修/JavaScript 基础知识梳理 9     0     1135

按位运算符将其操作数当做32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。

我们主要了解的按位运算符有七种,分别是:&|^~<<>>>>>

按位与运算符

按位与运算符 & ,对两个 32 位表达式的每一位执行按位与运算。如果a 和 b 都为1 则结果为1,否则结果为0。

a b a & b
0 0 0
0 1 0
1 0 0
1 1 1
示例:

下面演示如何使用& 运算符:

console.log(1 & 3);  // 1

例如 1 & 3 的结果为1,这是因为 1 的二进制表示为00000001,3 的二进制表示为00000011,根据 & 的规则,相同得1,不同得0,可以得出结果为 00000001,转为十进制,结果为 1。

按位或运算符

按位或运算符 |,只要a 和 b有一个为1,则结果为1,否则结果为0。

a b a | b
0 0 0
0 1 1
1 0 1
1 1 1
示例:

| 运算符和 & 运算符的区别在于,只要有一个操作数为1,结果就为1。同样是1 | 3 ,结果输出为3。

console.log(1 | 3);  // 3

1 的二进制表示为 00000001,3 的二进制表示为 00000011,根据 | 的规则,得到00000011,转为十进制,结果为 3。

按位异或运算符

按位异或运算符 ^,当 a 和 b 不相同时,结果为1,否则结果为0:

a b a ^ b
0 0 0
0 1 1
1 0 1
1 1 0
示例:

^ 运算符和 | 运算符有点类似,不同在于,如果操作位都为1,则结果为0。

console.log(1 ^ 3);  // 2

1 的二进制表示为 00000001,3 的二进制表示为 00000011,根据 ^ 的规则,得到 00000010,转为十进制,结果为 2。

按位非运算符

按位非运算符 ~,对位求反,将 1 变 0,将 0 变 1,也就是求二进制的反码。

a ~a
0 1
1 0
示例:

例如 1 的二进制表示为 00000001,取反得到 11111110,转为十进制,得到 -2:

console.log(~1);  // -2
console.log(~0);  // -1
console.log(~3);  // -4

右移运算符

右移运算符>> ,使指定值的二进制所有位都右移规定的次数,对于其移动规则只需记住符号位不变,左边补上符号位即按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

示例:

例如 1 的二进制为 00000001,所以 1>>1 的结果为 1:

console.log(1 >> 1);     // 0
console.log(8 >> 2);     // 2
console.log(64 >> 2);    // 16
console.log(128 >> 1);   // 64

左移运算符

左移运算符 <<,使指定值的二进制所有位都左移规定的次数,对于其移动规则只需记住丢弃最高位,0补最低位即按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

示例:
console.log(1 << 1);     // 2
console.log(8 << 2);     // 32
console.log(64 << 2);    // 256

无符号右移

无符号右移 >>>,该操作符会将第一个操作数向右移动指定的位数。向右被移出的位被丢弃,左侧用0填充。因为符号位变成了 0,所以结果总是非负的。

示例:
console.log(-5 >>> 1);    // 2147483645
console.log(-8 >>> -2);   // 8
console.log(-24 >>> 2);   // 1073741818

动手小练习

1.分别用七种按位运算符输出一些自定义的内容,然后有一个更进一步的认识与了解。

2.请说出下列代码的输出结果:

console.log(9 & 16);
console.log(5 & 1);
console.log(3 ^ 9);
console.log(~11);
console.log(36 >> 2);
console.log(6 << 6);
console.log(56 >>> 2);

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

9

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录


本文索引


|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?