js按位运算符(按位或,按位与,按位异或)

发布时间 2023-11-15 16:21:17作者: 程序员笔记--vue

1. 按位操作的概念:

  按位操作为, 将数据转化为二进制八位展示/十六位展示后根据条件进行计算的操作

2. 按位运算符分类:

  &: 按位与

  |: 按位或

  ^: 按位异或

  ~: 按位非

  <<: 左移运算符

  >>: 右移运算符

  >>>: 无符号右移

3. 具体讲解:

  &: 按位与  ---- 将数据变为二进制后每一位数字进行 “与” 的操作,  按位对比,1, 1 -> 1, 其余均为0  

    例:console.log(1 & 3) // 1  
    分别转换为2进制  1 --->    00000001

              3 --->    00000011

    按照与的操作   结果     00000001  -> 对应10进制的 1 

    (1,1 -> 1, 其余均为0 )

 

  |: 按位或  ---- 将数据变为二进制后每一位数字进行 “或” 的操作, 按位对比, 0,0 -> 0, 其余均为1

    例: console.log(1 | 3) // 3

 

    分别转换为2进制  1 --->    00000001

 

              3 --->    00000011

 

    按照或的操作   结果     00000011  -> 对应10进制的 3

 

    (0,0 -> 0, 其余均为1)

 

  ^: 按位异或  ---- 将数据变为二进制后每一位数字进行 “异或” 的操作,  按位对比,相同为0, 不同为1  

    例: console.log(1 ^ 3) // 2

 

    分别转换为2进制  1 --->    00000001

 

              3 --->    00000011

 

    按照或的操作   结果     00000010  -> 对应10进制的 2

 

    (相同为0, 不同为1)

 

  ~: 按位非  ---- 将数据变为二进制后每一位数字进行 “非” 的操作

    例: console.log(~1) // 2                console.log(~-1)

    分别转换为2进制  1 --->    00000001         10000001

    取反 -> 得到补码       11111110          01111110

    第一位为符号位, 0为+, 1为-  -            +  

    取下补码1  剩余数据     1111110           1111110

    取反            0000001          1111111    -- 负数先+1

    +1             0000010          0000000    -- 后取反

    转10进制,加上符号 --->   -2              0