码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 位运算笔记

时间:2014-09-01 22:21:13      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   div   问题   log   sp   amp   

之前一直以为,在js的位运算中,双精度浮点数在内部会先被转成32位整数,再执行位运算,然后再转为64位数值,因此效率极低。今天实验发现,对浮点执行位运算只会导致数值不准确,而不会导致效率低下,相比乘法,左移位要快66%(其实就是浮点运算与整数运算的差距)。

 

以下结果在 IE 7 ~ IE 10 上测试得出

 

技巧1:移位运算比乘除法快(当因数是2的幂数)

 

b = a << 1;

//大概快 6.8%


技巧2:奇偶判断

 

b = a & 1;

//0位与1相与,相比于 x % 2,大概快 35%

 

技巧3:判断两个数符号是否相同

 

(a ^ b) >= 0

// 相比于

if ( a == 0 )
return 1;
else if ( a > 0 )
return b >= 0;
else
return b <= 0;

// 其效率基本一样,但更简洁。

// 相比于

(a * b) >= 0;

// 不会有溢出问题。

 


技巧4:判断一个数是否为2的幂

 

(a & (a - 1)) == 0;

 

JavaScript 位运算笔记

标签:style   blog   color   java   div   问题   log   sp   amp   

原文地址:http://www.cnblogs.com/smalldragonluo/p/3950005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!