JS按位操作符

按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。例如,十进制数9,用二进制表示则为1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。

下面的表格总结了JavaScript中的按位操作符:

运算符 用法 描述 例子
按位与( AND) a & b 对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。 0b1110 & 0b1101 === 0b1100
按位或(OR) a | b 对于每一个比特位,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。 0b1110 | 0b1101 === 0b1111
按位异或(XOR) a ^ b 对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。 0b1110 ^ 0b1101 === 0b0011
按位非(NOT) ~ a 反转操作数的比特位,即0变成1,1变成0。 ~0b1110 === -0b1111
左移(Left shift) a << b a 的二进制形式向左移 b (< 32) 比特位,右边用0填充。 0b00001110 << 2 === 0b00111000
有符号右移 a >> b 将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位。 0b00001110 >>2 === 0b00000011
无符号右移 a >>> b 将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。 -1 >>> 1 === 2147483647, -1 >>>31 ===1

~ 按位非

因为不太理解 按位非的计算结果,所以查了下资料,总结了计算步骤如下。

计算步骤:
  1. 输入 ~7
  2. 转换成二进制,就是 0b00000111(首位是符号位,下同)
  3. 取补码,就是0b00000111(正数的补码就是其本身)
  4. 再按位取反,就是 0b11111000.
  5. 将补码转为原码,因为0b11111000是负数,所以转为原码的过程就是再求一次补码, 0b11111000(原)= 0b10000111(反) = 0b10001000(补)
  6. 返回结果 -8
再补充下原码反码补码的知识点,如下
  • 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制(第一位是符号位):
    +1 = 0b0000 0001(原)
    -1 = 0b1000 0001(原)

  • 反码的表示方法是:
    正数的反码是其本身,
    负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
    +1 = 00000001(原) = 00000001(反)
    -1 = 10000001(原) = 11111110(反)

  • 补码的表示方法是:
    正数的补码就是其本身,
    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
    +1 = 00000001(原) = 00000001(反) = 00000001(补)
    -1 = 10000001(原) = 11111110(反) = 11111111(补)

如果对你有帮助的话,记得点赞哦-

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 按位操作符(Bitwise operators)将其操作数(operands)当作 32 位的比特序列(由 0 和...
    小小的白菜阅读 1,472评论 0 0
  • 一元操作符 只能操作一个值的操作符。 递增和递减操作符 前置型:位于要操作的变量之前; 后置型:位于要操作的变量之...
    Sketch阅读 2,755评论 0 0
  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,本章逐一介绍这些运算...
    许先生__阅读 3,777评论 0 3
  • 高级运算符(Advanced Operators) 本文参考自苹果官方文档Advanced Operators本页...
    果啤阅读 5,525评论 1 5
  • 本以为鼓起勇气沟通可以改善生活,结果思想不在同一平面,发生了巨大的争吵和反感。 第五天,心情平复很多,只是言语带来...
    迷路的影子阅读 1,531评论 0 0

友情链接更多精彩内容