zoukankan      html  css  js  c++  java
  • 位运算符

    推荐阅读:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

    <<  左移

    二进制数左移n位, 就等价于乘以2^n。

    例如:14 << 2的值为56(可以算成14*2^2)

    >>  右移

    二进制数右移n位, 就等价于除以2^n。

    例如:16 >> 2的值为4 (可以算成16 / 2^2)

    >>> 无符号右移

    先把符号位置0,然后二进制数右移n位。

    原来 js 的 number 类型是 64 位浮点数,在执行位运算的时候,js 会把 number 转成 32 位带符号位二进制数

    就是说超过 2^32-1 的部分会被忽略,因此产生 2**32 >>> 0 === 0 的结果

    而在执行无符号位右移的时候,会把符号位置为0,因此产生 -1 >>> 0 === 2^32 - 1 的结果

    ~  按位 否

    二进制数全部取反,包括符号位。
    所以 ~1 === -2
    我们知道数字都以补码形式存在:
            原码                 反码                 补码
     1 : 000...001 ----> 000...001 -----> 000...001
    -2 : 100...010 ----> 111...101 -----> 111...110

    ~1 就是1的补码全部取反,111...110 和 -2 的补码一致

    按位否等价于 十进制取反,再减1,例如 :~233 === -234

    & 按位与

    0 & 0=0;  0 & 1=0;  1 & 0=0;  1 & 1=1

    | 按位或

    0 & 0=0;  0 & 1=1;  1 & 0=1;  1 & 1=1

     

    ^ 异或

    0^0=0;   0^1=1;   1^0=1;   1^1=0;

    同或

    js和大部分语言一样,没有同或。但是,众所周知,异或是同或的取反。

    所以我们可以用 按位否 + 异或 来表示同或,例如:~(16^8)

  • 相关阅读:
    漫游Kafka介绍章节简介
    poj 2309 BST 使用树阵lowbit
    华为-on练习--小写字符数的统计显示
    OpenMp高速分拣
    eclipse 于 Tomcat于 热部署 project
    2015第49周二
    2015第49周一
    2015第48周六
    2015第48周五
    2015第48周四
  • 原文地址:https://www.cnblogs.com/amiezhang/p/6731118.html
Copyright © 2011-2022 走看看