zoukankan      html  css  js  c++  java
  • js位操作

    1.&(与)

    都是1才是1

    例如:14&15  (14  二进制  1110

                            15  二进制   1111

                             &与的结果  1110  ----》结果14)

    (14&15).toString(2); //"1110"

    2.|(或)

    有一个是1就是1

    例如:14|15  (14  二进制  1110

                      15 二进制      1111

                       |与的结果       1111 ----》结果15)

    (14|15).toString(2); //"1111"

    3.^(异或)

    不同就是1

    例如:14^15  (14  二进制  1110

                            15    二进制   1111

                            ^与的结果      0001 ----》结果1)

    (14^15).toString(2); //"1"

    4.~(非)

    说到这里就要科普一下了,JavaScript仅支持32位整型数

    0变1,1变0

    例如:~14(14  二进制  0000 0000 0000 0000 0000 0000 0000 1110

            ~的结果     1111 1111 1111 1111 1111 1111 1111 0001

    最高位符号位为1,说明是个负数,大计基还记得嘛~~负数怎么来的

    (正数二进制,取反,+1(为什么这样呢?因为计算机不擅长减法,所以把负数处理成补数,使得相减就等于他们的补数相加;而一个数的正负数取反相加是11111111...再+1才等于0,所以要+1))

    逆过程,-1,取反

    1111 1111 1111 1111 1111 1111 1111 0001 --> 0000 0000 0000 0000 0000 0000 0000 1111

     ----》15 ----》当然因为是个负数,最终结果是-15)

    ~14; //-15

    5.<<(有符号左移)

    有符号左移会将32位二进制数的所有位向左移动指定位数

    num<<n相当于num乘以2的次方

    var num = 5; // 二进制111
    num << 3; // 二进制111000,十进制40

    6.>>(有符号右移)

    num>>n相当于num除以2的次方

    (64).toString(2)  //"1000000"
    (64>>3).toString(2)  //"1000",十进制8

    有符号左移与右移不会影响符号位。

    7.>>>(无符号右移)

    var num = -64;       //11111111111111111111111111000000
    (num >>> 5).toString(2); //"111111111111111111111111110",十进制134217726

    ps:>> << ~有时候会用来取整

    一般我们取整会用以下这些方式其中一种:

    parseInt(1.5) //1
    Math.round(1.5) //2
    Math.floor(1.5) //1
    Math.ceil(1.5) //2

    但是有时候我们想追求更高的性能,我们会考虑用位运算来取整:

    1.5>>0 //1
    1.5<<0 //1
    ~~1.5 //1

    参与 位运算 的操作数都会先对其进行抽象的 ToInt32 操作,上面3种操作都没有实质对数字进行什么位运算,只是利用了它先对数字进行ToInt32操作的特性(因为ToInt32操作js没有提供方法接口)

  • 相关阅读:
    UVA 1262 Password(密码)(暴力枚举)
    【POJ 3468】A Simple Problem with Integers【树状数组】
    【洛谷P3368】【模板】树状数组2【树状数组】
    【洛谷P3368】【模板】树状数组2【树状数组】
    【洛谷P3368】【模板】树状数组2【树状数组】
    【洛谷P1955】程序自动分析【并查集】【离散】
    【洛谷P1955】程序自动分析【并查集】【离散】
    【洛谷P1955】程序自动分析【并查集】【离散】
    【CH 4201】楼兰图腾【树状数组】
    【CH 4201】楼兰图腾【树状数组】
  • 原文地址:https://www.cnblogs.com/amiezhang/p/7940530.html
Copyright © 2011-2022 走看看