JavaScript 中的按位运算符

JavaScript 中的按位运算符

前言

在 JavaScript 中经常会见到 & | 这两个符号。前者表示并且,取交集。后者表示或者,取并集。但偶尔看别人写 JS 代码或者在一些框架的源码中经常会遇到 ^ ~ << >> 这几种运算符。那么它们分别表示什么意思呢?

既然叫按位运算符。必然离不开 “位” 这个概念。我们都知道不管是字符串还是数值在计算机内部都是以 0 和 1 来表示的。那么这里的 0 或者 1 就是一位。比如我们表示十进制的 3,用二进制表示就是 0000 0011。那么如果说把 3 往前移一位。就是 0000 0110。转成十进制就是 6。

按位运算符一共有以上提到的 6 种。

1. &

含义:表示并且,多个条件同时满足。在二进制中表示为如果对应的位都是 1,则为1。否则(有一个位不为1)为 0。

二进制:
0000 0001 (1)
0000 0011 (3)
——————
0000 0001 (1)

JS 示例:

console.log(1&3)//1
var a = 1,b = undefined;
if(a&b){
   console.log(1)
}else{
   console.log(2)
}//2

2. |

含义:表示或者,多个条件满足一个条件即可。在二进制中表示为对应的任意位为1,则为1。否则(所有位都为0)为 0。

二进制:
0000 0001 (1)
0000 0011 (3)
——————
0000 0011 (3)

JS 示例:

console.log(1|3)//3
var a = 1,b = undefined;
if(a | b){
   console.log(1)
}else{
  console.log(2)
}//1

3. ^

含义:^ 与 | 有些相似,区别是如果两个操作位都为 1 的话,结果为 0。

二进制:
0000 0001 (1)
0000 0011 (3)
——————
0000 0010 (2)

JS 示例:

 console.log(1^3)//2

4. ~

含义:~ 表示对位求反。1 变 0,0 变 1。十进制计算结果是取反减1。

JS 示例:

console.log(~3)//-4,3求反之后为-3-1=-4

5. <<

含义:表示向左移动。

二进制:
0000 0011 (3)
——————
0000 0110 (6)

示例:

console.log(3<<1)//6

十进制的 3 转换 二进制为 0000 0011(12(1)+12(0)=3)。把 3 向左移动。就是 0000 0110(12(2)+12(1)=6)。转成十进制就是 6。

6. >>

含义:表示向右移动。

0000 0011 (3)
——————
0000 0001 (1)

示例:

console.log(3>>1)//1

十进制的 3 转换 二进制为 0000 0011(12(1)+12(0)=3)。把 3 向右移动。就是 000000 01(1*2(0)=1)。转成十进制就是 1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值