JavaScript位运算

  1. 位运算的基本类型
  • 一元 ~(按位求补)运算符
  • 二进制 << (左移) 、 >> (右移) 和 >>> (无符号右移)运算符
  • 二进制 &(逻辑 AND)、|(逻辑 OR)和 ^(逻辑异或)运算符
  1. 求数组一半长度,遇到奇数则舍去小数
    halfLen = a.length >> 1; 5>>1//2
    不过需要注意右移运算符>>优先级别加号+还低。 因此在于其他操作符号想结合时候可以适当增加括号,例如求中位
    mid = left + (right - left >> 1);
    mid = left + ~~((right - left) / 2);
    不建议使用mid = (left + right)>>1;,因为加号操作可能造成溢出

  2. 舍弃小数,保留整数位
    halfLen = ~~(a.length / 2);
    halfLen = a.length / 2 | 0;

  3. 判断奇偶
    evenNum & 1 === 0; // 偶数
    oddNum & 1 === 1; // 奇数

  4. 善用异或(相同为0,不同为1)
    5 ^ 5; // 0
    5 ^ 5 ^ 6 ^ 6 ^ 7; // 7

  5. 判断数是否是2的幂次方(注意0也会被判为true)
    num & (num - 1) === 0;



  6. 翻转数的第K位
    num ^= 1 << k;

  7. 将第K位设为0
    num &= ~(1 << k);

  8. 将第K位设为1
    num |= 1 << K;

  9. 判断第K位是否为0
    num & 1 << k === 0;

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

相关阅读更多精彩内容

友情链接更多精彩内容