阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 位运算符

      位运算符

      (仅作了解,可以忽略不看,项目中很少用到);

      基础知识

      • 类型;
        • 有符号;
          • 数值位,前31位;
          • 符号位,第32位;
            • 0,整数
            • 1,负数
        • 无符号;
          • 只能是正数
          • 第32位表示数值
          • 数值范围可以加大
      • 数值范围;-2147483648~2147483647
      • 存储方式
        • 正数
          • 纯2进制存储
          • 31位表示数值
          • 数值范围可以加大
        • 负数
          • 2进制补码存储
          • 补码的计算步骤
            • 1、确定该数字的非负版本的二进制表示
            • 2、求得二进制反码,既要把0替换为1,把1替换为0;
            • 3、在二进制反码上加1;
      • 当作0来处理的特殊值
        • NaN
        • Infinity

      逻辑位运算

      • 返回值为1,
        • 按位非~ 0
        • 按位与& 对应值全为1
        • 按位或| 任何一位是1
        • 按位异或^ 既不同时为0,也不同时为1;
      • 返回值为0;
        • 按位非~ 1
        • 按位与& 任何一位是0
        • 按位或| 对应位全0;
        • 按位异或^ 对应位全0或全1

      位移操作

      • 左移<<
        • 将数值的所有位左移指定的位数
        • 所有空位用0补充
        • 左移1位对其X2,左移2位对其X4;依次类推;
      • 有符号右移>>
        • 将数值的所有位右移指定的位数
        • 一处的位被舍弃
        • 保留符号位
        • 右移一位对齐除2,右移两位对齐除4,依次类推
      • 无符号右移>>>
        • 正数,与有符号右移结果相同
        • 负数,会出现无限大的数值;
      • 复合赋值运算符:位操作符与等号结合,复合赋值不会有性能方面的提升;

      按位操作符

      • & 按位与
      • | 按位或
      • ~ 按位非
      • ^ 按位异或
      • << 按位左移
      • >> 按位右移
      目录
      目录