AJax技术

javascript 位运算符与位运算符的技巧(4/5)

字号+ 作者:H5之家 来源:H5之家 2017-01-11 09:00 我要评论( )

javascript 位运算符与位运算符的技巧 有需要了解的朋友可参考参考。

javascript 位运算符与位运算符的技巧 有需要了解的朋友可参考参考。

注意:左移运算保留数字的符号位。例如,如果把 -2 左移 5 位,得到的是 -64,而不是 64。“符号仍然存储在第 32 位中吗?”是的,不过这在 ECMAScript 后台进行,开发者不能直接访问第 32 个数位。即使输出二进制字符串形式的负数,显示的也是负号形式(例如,-2 将显示 -10。)

有符号右移运算
有符号右移运算符由两个大于号表示(<$lt;)。它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。例如,把 64 右移 5 位,将变为 2:

var iOld = 64;  //等于二进制 1000000
var iNew = iOld >> 5; //等于二进制 10 十进制 2同样,移动数位后会造成空位。这次,空位位于数字的左侧,但位于符号位之后。ECMAScript 用符号位的值填充这些空位,创建完整的数字,如下图所示:

 

无符号右移运算
无符号右移运算符由三个大于号(>>>)表示,它将无符号 32 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。

用有符号右移运算中的例子,把 64 右移 5 位,将变为 2:

 代码如下 复制代码

var iOld = 64;  //等于二进制 1000000
var iNew = iOld >>>5; //等于二进制 10 十进制 2对于负数,情况就不同了。

无符号右移运算用 0 填充所有空位。对于正数,这与有符号右移运算的操作一样,而负数则被作为正数来处理。

由于无符号右移运算的结果是一个 32 位的正数,所以负数的无符号右移运算得到的总是一个非常大的数字。例如,如果把 -64 右移 5 位,将得到 134217726。如果得到这种结果的呢?

要实现这一点,需要把这个数字转换成无符号的等价形式(尽管该数字本身还是有符号的),可以通过以下代码获得这种形式:

 代码如下 复制代码

var iUnsigned64 = -64 >>> 0;

然后,用 Number 类型的 toString() 获取它的真正的位表示,采用的基为 2:

 代码如下 复制代码

alert(iUnsigned64.toString(2));

这将生成 11111111111111111111111111000000,即有符号整数 -64 的二进制补码表示,不过它等于无符号整数 4294967232。

出于这种原因,使用无符号右移运算符要小心。


下常用的javascript位运算符的技巧

js位运算来判断奇偶数

 代码如下 复制代码

if(n&1===0){
//偶数
}else{
//奇数
}

js位运算符来代替Math.floor

 代码如下 复制代码

(2.9|0)===2
(~~2.9)===2
(2.9>>>0)===2
(2.9>>0)===2
(2.9<<0)===2
//注意
~~(-2.999);//= -2
Math.floor(-2.999);// = -3RGB2HEX
function RGB2HEX(a,b,c){return"#"+((256+a<<8|b)<<8|c).toString(16).slice(1)}

//或者

 代码如下 复制代码

function toHexString(r,g,b) {
  return ("00000" + (r << 16 | g << 8 | b).toString(16)).slice(-6);
}
var hex = toHexString(red, green, blue);检测相等关系
if(a!=123)
if(a^123)
//注意:
false ^ 1 // 1
true ^ 1 // 0
2 ^ 1 // 3
{} ^ 1 // 1这个很好用的,比如下面的代码

var isReady = 0;
 
// somewhere else
if( isReady ) { }
 
// somewhere else, set isReady state to 1
isReady ^= 1;
 
// somewhere else, set isReady state to 0
isReady ^= 1;默认值
if (!n) n = defaultValue;

末页

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 原生JS写Ajax的请求函数

    原生JS写Ajax的请求函数

    2017-01-11 09:01

  • jquery使用技巧小结

    jquery使用技巧小结

    2017-01-11 08:14

  • AJAX实例 Ajax Ajax请求 Ajax教程 AJAX实例

    AJAX实例 Ajax Ajax请求 Ajax教程 AJAX实例

    2017-01-07 17:00

  • AJAX使用技巧:如何处理书签和翻页按扭(2)

    AJAX使用技巧:如何处理书签和翻页按扭(2)

    2017-01-07 15:02

网友点评