JS位操作符

时间:2022-12-08 09:47:48

1.按位与 AND &

var result = 25 & 3;
alert(result);  //1var result2 = 25 & -3;alert(result2); //25

按位与将两个操作数的每一位执行以下真值表:

第一个数值的位 第二个数值的位 结果
 1  1  1
 1  0  0
 0 1  0
 0  0  0

25的二进制补码:0001 1001;

3的二进制补码: 0000 0011;

-3的二进制补码:1111 1101

25 & 3 = 0000 0001;//1

25 & -3 = 0001 1001;//25

2.按位或 OR |

alert(25 | 3); //27
alert(25 | -3); //-3

按位或将两个操作数的每一位执行以下真值表:

第一个数值的位 第二个数值的位 结果
1 1 1
1 0 1
0 1 1
0 0 0

25 | 3 = 0001 1011;//27

25 | -3 = 1111 1101;//-3

3.按位异或 XOR ^

alert(25 ^ 3); //26
alert(25 ^ -3); //-28

按位异或将两个操作数的每一位执行以下真值表:

第一个数值的位 第二个数值的位 结果
1 1 0
1 0 1
0 1 1
0 0 0

25 ^ 3 = 0001 1010; //26

5 ^-3 = 1110 0100; //-28

4.按位非 NOT ~

alert(~25); //-26
alert(~-25); //24

按位非就是返回数值的反码:

25的二进制补码:0001 1001;

-25的二进制补码:1110 0111

~25 = 1110 0110; //-26

~-25 = 0001 1000; //24

5.左移 <<

左移运算符将数值向左移动,空出来的位置用0填充。左移运算符不会影响操作数的符号位

alert(25 << 2); // 100
alert(-25 << 2); //-100;

25左移两位相当于 25*2*2= 100;

-25左移两位相当于-25*2*2 = -100;

25的二进制补码:0000 0000 0001 1001;

左移两位:0000 0000 0110 0100; // 100

-25的二进制补码:1111 1111 1110 0111;

左移两位:1111 1111 1001 1100; //-100

6.有符号的右移 >>

有符号右移运算符将数值向右移动,但保留符号位的位置,在符号位的右侧出现空位,用符号位的值来填充

alert(25 >> 2);
alert(-25 >> 2)

25二进制补码:0001 1001;

有符号右移两位:0000 0110; //6 移出去的 01被舍弃

-25的二进制补码:1110 0111;

有符号右移两位:1111 1001;// -7 移出的 11 被舍弃

7.无符号右移 >>>

无符号右移运算符将数值向右移动,以0填充空位,忽略符号位,符号位跟着一起移动,这样就导致了正数移完之后还是正数,负数移完之后变成了正数。

alert(25 >>> 4);
alert(-25 >>> 4); 

以4字节表示:

25的二进制补码:0000 0000 0000 0000 0000 0000 0001 1001

无符号右移4位: 0000 0000 0000 0000 0000 0000 0000 0001; //1

-25的二进制补码:1111 1111 1111 1111 1111 1111 1110 0111;

无符号右移4位:0000 1111 1111 1111 1111 1111 1111 1110; //268435454

JS位操作符的更多相关文章

  1. js中的位运算符 ,按位操作符

    按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制.十六进制或八进制数值.例如,十进制数9,用二进制表示则为1001.按 ...

  2. 浅谈JavaScript位操作符

    因为ECMAscript中所有数值都是以IEEE-75464格式存储,所以才会诞生了位操作符的概念. 位操作符作用于最基本的层次上,因为数值按位存储,所以位操作符的作用也就是操作数值的位.不过位操作符 ...

  3. 为什么不要在 JavaScript 中使用位操作符?

    如果你的第一门编程语言不是 JavaScript,而是 C++ 或 Java,那么一开始你大概会看不惯 JavaScript 的数字类型.在 JavaScript 中的数字类型是不区分什么 Int,F ...

  4. C&plus;&plus;位操作符总结

    #include <stdio.h> #include <memory.h> #include <malloc.h> #define MaxBinLength 16 ...

  5. C&num;位操作符

    位操作符是对数据按二进制位进行运算的操作符.c#位操作符包括: 按位与 & 按位或 | 按位取反 ~ 左移 << 右移 >> 例如:   6:00000110 3:00 ...

  6. ECMAScript位操作符

    在ECMAScript中,有少数的几个操作符可以对二进制位进行直接操作,这几个操作符本身直接对二进制进行操作,所有它们的本身是非常效率的,学习这一段有助于以后的优化以及理解. ECMAScript中采 ...

  7. Java的按位操作符

    本文参考:Java的位操作符 Java的位操作符用来操作整数基本数据类型中的单个"比特"(bit),即代进制位.而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作. ...

  8. 【关于Java移位操作符&amp&semi;按位操作符】

    一.java按位运算符(操作符) 这段时间偶尔看一下源码,会发现有很多很基础的java知识在脑海中已经慢慢的淡成不常用记忆,于是打算捡起来一些. 按位运算符是来操作整数基本数据类型中的单个“比特”(b ...

  9. 原码、反码、补码及位操作符,C语言位操作

    计算机中的所有数据均是以二进制形式存储和处理的.所谓位操作就是直接把计算机中的二进制数进行操作,无须进行数据形式的转换,故处理速度较快. 1.原码.反码和补码 位(bit) 是计算机中处理数据的最小单 ...

随机推荐

  1. Excel—SUMPRODUCT用法指南

    1.最简单的SUMPRODUCT函数等同与SUM函数. 2.SUMPRODUCT可以设置多参数,其输出值为各参数对应值的乘积之和. E2=6*7+8*6+2*8+9*8+3*8+5*9 3.SUMPR ...

  2. PHP 缩放图片

    class CImage { /** * 生成保持原图纵横比的缩略图,支持.png .jpg .gif * 缩略图类型统一为.png格式 * $srcFile 原图像文件名称 * $toW 缩略图宽 ...

  3. Qt学习之路&lpar;34&rpar;&colon; 国际化&lpar;下&rpar;

      原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/245063 上次 ...

  4. 计算几何总结(Part 1~2)

    Preface 对于一个初三连三角函数都不会的蒟蒻来说计算几何简直就是噩梦. 反正都是要学的也TM没办法,那就慢慢一点点学起吧. 计算几何要有正确的板子,不然那种几百行CODE的题写死你. 本蒟蒻的学 ...

  5. svn git 必须理解的概念

    不都是SCM代码管理嘛,有很大区别么?很多svn老鸟都是抱着这样的心态去学习git,然后无一幸免地陷入“查阅过很多资料,依然掌握不好”的困境,至少我们团队是这样的. 网上的资料确实已经很多了,却没有把 ...

  6. 使用 python 自动打包 Android 和 iOS

    https://github.com/jinzunyue/package-Android-and-iOS

  7. SPP Net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)论文理解

    论文地址:https://arxiv.org/pdf/1406.4729.pdf 论文翻译请移步:http://www.dengfanxin.cn/?p=403 一.背景: 传统的CNN要求输入图像尺 ...

  8. 5maven工程莫名其妙只在项目名称那里有一个红叉

    manven工程里面没有报错的地方,编译也没有问题,只是项目名称那里有一个红叉.   解决办法:   右击项目-->maven-->update project   注意: 这种方法有时可 ...

  9. &lbrack;实战&rsqb;MVC5&plus;EF6&plus;MySql企业网盘实战&lpar;8&rpar;——文件下载、删除

    写在前面 上篇文章通过iframe实现了文件的无刷新上传.这篇我们将实现文件的下载与删除. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySq ...

  10. MySQL 5&period;7&period;21 免安装版配置教程

    MySQL是世界上目前最流行的开源数据库.许多大厂的核心存储往往都是MySQL. 要安装MySQL,可以直接去官方网站下载.本教程将说明对于MySQL的免安装版如何进行配置和安装. 官方下载:http ...