javascript的位运算

本文详细介绍了按位非、按位与、按位或及按位异或四种位运算的基本概念及其应用实例,通过具体的代码和二进制表示帮助读者理解位运算的原理。

1,按位非(NOT)

按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码

var num1 = 25;    // 二进制 00000000000000000000000000011001
var num2 = ~num1; // 二进制 11111111111111111111111111100110
alert(num2);      // -26

这里,对 25 执行按位非操作,结果得到了26。这也验证了按位非操作的本质:操作数的负值减 1。
因此,下面的代码也能得到相同的结果:

var num1 = 25;
var num2 = -num1 - 1;
alert(num2);         // "-26"

2,按位与(AND)

按位与操作符由一个和号字符( & )表示,它有两个操作符数。从本质上讲,按位与操作就是将两
个数值的每一位对齐。

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

可见,对 25 和 3 执行按位与操作的结果是 1。为什么呢?请看其底层操作

 25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001

原来,25 和 3 的二进制码对应位上只有一位同时是 1,而其他位的结果自然都是 0,因此最终结果
等于 1。

3,按位或(OR)

按位或操作符由一个竖线符号(|)表示,同样也有两个操作数。按位或操作在有一个位是 1的情况下就返回 1,而只有在两个位都是 0的情况下才返回 0。

var result = 25 | 3;
alert(result); //27

25 与 3 按位或的结果是 27:

25 = 0000 0000 0000 0000 0000 0000 0001 1001
 3 = 0000 0000 0000 0000 0000 0000 0000 0011
--------------------------------------------
OR = 0000 0000 0000 0000 0000 0000 0001 1011

 

4,按位异或(XOR)

按位异或与按位或的不同之处在于,这个操作在两个数值对应位上只有一个 1 时才返回 1,如果对
应的两位都是 1 或都是 0,则返回 0。

var result = 25 ^ 3;
alert(result); //26

25 与 3 按位异或的结果是 26,其底层操作如下所示

 25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
XOR = 0000 0000 0000 0000 0000 0000 0001 1010

 

转载于:https://www.cnblogs.com/tonety/p/7419137.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值