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

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)

 

  ~: 按位非  ---- 变二进制后取非得到补码,看补码首位,为0则先+1后取反, 为1则先取反后+1

    例: 正数取非  console.log(~1) // 2           负数取非 console.log(~-1) // 0

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

    取反 -> 得到补码       11111110          01111110

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

    取下补码1  剩余数据     1111110           1111110

    取反            0000001          1111111    -- 先+1

    +1             0000010          0000000    -- 后取反

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

    

  <<: 左移运算符 ---- 符号位不变, 按位左移, 右边补0

    例: 正数取非  console.log(1 << 2) // 4

    解析:       1 --- >     00000001

      左移两位,右边补0    0000000100

      结果(转10进制)      4    

     

  >>: 右移运算符 ---- 符号位不变, 按位右移, 左边补0(正数)

    例1: 正数取非  console.log(3 >> 1) // 1

    解析:       3 --- >  00000011

      右移一位,左边补0     00000001 1    --->  左边补了个0, 最后一位的1被挤掉

      结果(转10进制)      1   

    例2: 正数取非  console.log(-18 >> 1) // -9

    解析:       -18 --- >  10010010

      右移四位,左边补0     11001001 0    --->  左边补了个1, 最后一位的0被挤掉

      结果(转10进制)     -

         

 

posted @ 2023-11-15 16:12  程序员笔记--vue  阅读(561)  评论(0编辑  收藏  举报