β

JavaScript 位操作符

PandaCafe 193 阅读

位操作符即按内存中表示数值的位来操作数值。默认情况下,JavaScript 中的所有整数都是有符号整数。

如果对非数值应用位操作符,会先使用 Number() 函数将该值转换为一个数值,然后再应用位操作。

按位非(NOT)

~ 表示,结果返回数值的反码,也就是操作数的负值减 1。

var num = ~3;
alert(num);  //-4

按位与(AND)

& 表示。有两个操作数,按位与操作就是将两个数值的每一位对齐,然后在相同位置上执行 AND 操作。AND 操作只有两个对应位都是 1 时返回 1,否则返回 0。

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

按位或(OR)

| 表示,有两个操作数,在每一位上执行 OR 操作。OR 操作当两数都是 0 时返回 0,其他情况下返回 1。

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

按位异或(XOR)

^ 表示,也有两个操作数,在每一位上执行异或操作。异或的规则是,两数不同时返回 1,相同时返回 0。

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

左移

<< 表示。将数值的所有位向左移动指定的位数,左移 n 位相当于乘以 2 的 n 次方,左移不会影响操作数的符号位

var num = 2 << 5;
alert(num); //64

有符号右移

>> 表示,将所有位向右移动,用符号位的值来填充空位。结果与左移相反。

var num = 64 >> 5;
alert(num); //2

无符号右移

>>> 表示。和有符号右移的区别是,用 0 来填充空位。对正数来说,无符号右移和有符号右移的结果相同,对负数来说,无符号右移的结果往往变成一个很大的数。

var num = 64 >>> 4;
alert(num); //4
var newNum = -64 >>> 4;
alert(newNum); //268435452

用位操作符快速取整

位操作符可以用来进行取整,替代 Math.floorMath.ceil 函数,因为操作符的执行速度往往比函数要快很多。有的是向上取整,有的向下,注意区别。

var num = 102.34;
alert(0|num);  // 102,也可以用 ~~num
alert(-~num);  // 103
作者:PandaCafe
一起聊聊互联网
原文地址:JavaScript 位操作符, 感谢原作者分享。

发表评论