乐趣区

关于前端:热点面试题-常用位运算方法

前言

极度投入,深度沉迷,边界清晰

前端小菜鸡一枚,分享的文章纯属个人见解,若有不正确或可待探讨点可随便评论,与各位同学一起学习~

欢送关注 『前端进阶圈』 公众号,一起摸索学习前端技术 ……

公众号回复 加群 扫码, 即可退出前端交流学习群,长期交流学习 ……

公众号回复 加好友,即可添加为好友

罕用位运算办法

判断一个数的奇偶性

  • 奇数:返回 1
  • 偶数:返回 0

    console.log(7 & 1);    // 1
    console.log(8 & 1) ;   // 0

向下取整

// 不能对正数取整
console.log(~~11.71)     // 11
console.log(11.71 >> 0)  // 11
console.log(11.71 << 0)  // 11
console.log(11.71 | 0)   // 11
console.log(6.83 >>> 0)   // 6

取两头值

console.log(12 >> 1); // 6

判断一个数是否等于指标数

let a = 4654;

// 如何和指标数相等,则等于 0,否则等于其余数
if (a ^ 1171) {
    // 不等于的状况
    console.log(12);
} else {
    // 等于的状况
    console.log(34);
}

判断一个数是不是 2 的整数次幂, 如果是 0, 则阐明这个数是 2 的整数次幂

n & (n - 1)
// 是 0 则是 2 的整数次幂,不是则返回其余数
console.log(16 & (16 - 1)); // 0
console.log(15 & (15 - 1));

判断一个值是否存在

// before
if (arr.indexOf(item) > -1) {// code}

// 按位非:item 将会转换为 string 类型进行查找
if (~arr.indexOf(item)) {// code}

求一个数的相反数

// 求正数的相反数
console.log(~-n + 1);   // n
// 求负数的相反数
console.log(~n + 1);  // -n

文章特殊字符形容:

  1. 问题标注 Q:(question)
  2. 答案标注 R:(result)
  3. 注意事项规范:A:(attention matters)
  4. 详情形容标注:D:(detail info)
  5. 总结标注:S:(summary)
  6. 剖析标注:Ana:(analysis)
  7. 提醒标注:T:(tips)

往期回顾:

  • 热点面试题:Virtual DOM 相干问题?
  • 热点面试题:什么是粘包 / 半包问题,该如何解决?
  • 热点面试题:console.log()同异步问题?
  • 热点面试题:过程系列问题?
  • 热点面试题:Node.js 中的垃圾回收机制?
  • 热点面试题:简述 http3.0~http1.0 别离有什么改良?
  • JavaScript 中的 AMD 和 CMD 标准
  • Vue 数据监听 Object.definedProperty()办法的实现

最初:

  • 欢送关注 『前端进阶圈』 公众号,一起摸索学习前端技术 ……
  • 公众号回复 加群 扫码, 即可退出前端交流学习群,长期交流学习 ……
  • 公众号回复 加好友,即可添加为好友
退出移动版