前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript 中的位运算符

javascript 中的位运算符

作者头像
前端小书童
发布2020-09-24 11:22:19
9160
发布2020-09-24 11:22:19
举报
文章被收录于专栏:前端小书童

位与(&)、位或(|)、位异或(^)、非位(~)

  • 左移(<<)、右移(>>)、无符号右移(>>>)

&(位与)

  • “&”运算符(位与)用于对两个二进制操作数,逐位取与

第一个数的位值

第二个数的位值

运算结果

1

1

1

1

0

0

0

1

0

0

0

0

|(位或)

  • “|”运算符(位或)用于对两个二进制操作数,逐位取或

第一个数的位值

第二个数的位值

运算结果

1

1

1

1

0

1

0

1

1

0

0

0

^(位异或)

  • “^”运算符(位异或)用于对两个二进制操作数,逐位取异或
  • 位数据相同得 0,不同得 false
  • 两个相同的数取异或的 0

第一个数的位值

第二个数的位值

运算结果

1

1

0

1

0

1

0

1

1

0

0

0

~(位非)

  • “~”运算符(位非)用于对一个二进制操作数,逐位取非 第 1 步:把运算数转换为 32 位的二进制整数。第 2 步:逐位进行取反操作。第 3 步:把二进制反码转换为十进制浮点数
  • 位非运算实际上就是对数字进行取负运算,再减 1 例如 ~5 等价于 -5-1 结果都是-6

<<(左移位)

“<<”运算符执行左移位运算

  • 在移位运算过程中,符号位始终保持不变
  • 如果右侧空出位置,则自动填充为 0;超出 32 位的值,则自动丢弃
代码语言:javascript
复制
console.log(5 << 1) // 10
//  .... 00 0101   ->  5
//  向右移动1位
//  .... 00 1010   ->  10

>>(右移位)

“>>”运算符执行有符号右移位运算

  • 把数字中的所有有效位整体右移,再使用符号位的值填充空位
  • 移动过程中超出的值将被丢弃
代码语言:javascript
复制
console.log(10 >> 1) // 5
//  .... 00 1010   ->  10
//  向左移动1位
//  .... 00 0101   ->  5

>>>(无符号右移位)

“>>>”运算符执行五符号右移位运算

  • 它把无符号的 32 位整数所有数位整体右移
  • 对于无符号数或正数右移运算,无符号右移与有符号右移运算的结果是相同的
  • 对于负数来说,无符号右移将使用 0 来填充所有的空位,同时会把负数作为正数来处理
代码语言:javascript
复制
console.log(5 >>> 1) // 2
//  .... 00 0101   ->  5
//  向左移动1位
//  .... 00 0010   ->  2

console.log(-5 >>> 1) // 2147483645
//  100... 00 0101   ->  5
//  向左移动1位
//  010... 00 0010   ->  2147483645

组合位运算

  • ^= a^=b 等价 a = a^b
  • ~~ ~~a 等价 ~(~a) 等价 a
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小书童 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • &(位与)
  • |(位或)
  • ^(位异或)
  • ~(位非)
  • <<(左移位)
  • >>(右移位)
  • >>>(无符号右移位)
  • 组合位运算
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档