花里胡哨的位运算技巧-JavaScript

大佬之所以会被称之为大佬,是因为他们有些操作真的够骚。大佬的代码里面往往充满了各种“骚操作”,不加注释绝对看不懂的那种。令人头疼的一点就是大佬们对位运算的使用,短短几行,就可以让你云里雾里。现整理了一些位运算的小妙招,虽然花里胡哨,但是足可以令人拍案叫绝。

1.使用左移运算符 << 得到2的次方
        console.log(1 << 2) //4————2的2次方
        console.log(1 << 10) //1024————2的10次方
2.使用 & 判断奇偶性

偶数 & 1 = 0
奇数 & 1 = 1

        console.log(5 & 1) //1
        console.log(8 & 1) //0
3.使用 !! 将数字转为布尔值

所有非0的值都是true,包括负数、浮点数

        console.log(!!1) //true
        console.log(!!0) //false
        console.log(!!-1) //true
        console.log(!!6.18) //true
4.使用~~ >> << >>> | 来取整

相当于使用了 Math.floor()

        console.log(~~11.11) // 11
        console.log(11.11 >> 0) // 11
        console.log(11.11 << 0) // 11
        console.log(11.11 | 0) // 11
        console.log(11.11 >>> 0) // 11
        console.log(-11.11 >>> 0) // 4294967285

其中 >>> 不可以对负数取整

5.使用 n + 0.5 | 0 来对n进行四舍五入

相当于 Math.round()

        let x = 11.99;
        let y = 11.11;
        console.log(x + 0.5 | 0) //12
        console.log(y + 0.5 | 0) //11
        //   如果是负数,则变成 A - 0.5 | 0
        let r = -11.99;
        let z = -11.11;
        console.log(r - 0.5 | 0) //-12
        console.log(z - 0.5 | 0) //-11
6.使用^判断符号是否相同

(a ^ b) >= 0; // true 相同; false 不相同

        let b = 12;
        let c = -13;
        console.log((a ^ b) >= 0) //true
        console.log((a ^ c) >= 0) //false
7.n & (n - 1) 判断n是否为2的整数幂

如果为 0,说明 n 是 2 的整数幂
leetcode#231

        let d = 20;
        let e = 32;
        console.log(d & (d - 1)) //16————说明d不是2的整数幂
        console.log(e & (e - 1)) //0————说明e是2的整数幂

【作者水平有限,欢迎大家在评论区交流指正~】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容