位操作符

位操作

  • 最底层上的操作,js中所有数值都以IEEE-754-64位格式存储
  • 位操作,会先将64位数值,转换为32位整数,再执行操作,结果再转换为64位
  • 对于有符号数,最后一位表示数值的符号位
  • 负数是以二进制补码的形式存储的,求补码规则
    • 先求这个数值绝对值的二进制码
    • 再对该二进制码取反,称为反码
    • 得到的反码再加1,即可得到补码
  • 默认情况下,es中所有的整数都是有符号整数
  • 64位转换位32位过程,会导致一个严重的副效应,对于特殊的NaN、undefined和Infinity应用位操作时,都会被当成0来处理
  • 对于非数值采用位操作,会先用Number()函数来转换

按位非 ~

  • 返回数值的反码,每一位取反
  • number的反码位也可以用 -number-1取得,但非表示在最底层执行操作,速度更快

按位与 &

  • 将两个操作数每一位进行按位与运算

按位或 |

  • 将两个操作数每一位进行按位或运算

按位异或 ^

  • 两个操作数的每一位相同为0,不同为1
  • 任何数与0异或都是它本身,该数的每一位与1异或则是取反

移位操作

  • 左移 << ,每左移一位相当于 *2
  • 有符号的右移>>,最高位补符号位,与左移恰好相反,每右移一位相当于 / 2取整。
  • 无符号右移 >>> ,最高为补0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值