JavaScript 位运算笔记
2014-06-16 00:00
585 查看
之前一直以为,在js的位运算中,双精度浮点数在内部会先被转成32位整数,再执行位运算,然后再转为64位数值,因此效率极低。今天实验发现,对浮点执行位运算只会导致数值不准确,而不会导致效率低下,相比乘法,左移位要快66%(其实就是浮点运算与整数运算的差距)。
以下结果在 IE 7 ~ IE 10 上测试得出
技巧1:移位运算比乘除法快(当因数是2的幂数)
大概快 6.8%
技巧2:奇偶判断
0位与1相与,相比于 x % 2,大概快 35%
技巧3:判断两个数符号是否相同
相比于
其效率基本一样,但更简洁。
相比于
不会有溢出问题。
技巧4:判断一个数是否为2的幂
以下结果在 IE 7 ~ IE 10 上测试得出
技巧1:移位运算比乘除法快(当因数是2的幂数)
<!-- lang: js --> b = a << 1;
大概快 6.8%
技巧2:奇偶判断
<!-- lang: js --> b = a & 1;
0位与1相与,相比于 x % 2,大概快 35%
技巧3:判断两个数符号是否相同
<!-- lang: js --> (a ^ b) >= 0
相比于
<!-- lang: js --> if ( a == 0 ) return 1; else if ( a > 0 ) return b >= 0; else return b <= 0;
其效率基本一样,但更简洁。
相比于
<!-- lang: js --> (a * b) >= 0;
不会有溢出问题。
技巧4:判断一个数是否为2的幂
<!-- lang: js --> (a & (a - 1)) == 0;
相关文章推荐
- JavaScript学习笔记03——子表达式运算顺序
- JavaScript学习笔记12-数学运算
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第21讲_js运算符2_js移位运算_学习笔记_源代码图解_PPT文档整理
- 韩顺平 javascript教学视频_学习笔记4_js运算符2_js移位运算
- javascript学习笔记[2]--数据运算
- JavaScript学习笔记2
- JavaScript学习笔记7
- JavaScript学习笔记3
- javascript学习笔记
- JavaScript表达式与运算符
- JavaScript 学习笔记(二)
- javascript入门·简单运算和数据类型转换
- JavaScript学习笔记5
- JavaScript 学习笔记 2
- JavaScript 学习笔记 4
- [导入]javascript学习笔记
- prototype.js-JavaScript包开发笔记
- JavaScript 学习笔记 3
- JavaScript 学习笔记(一)
- ArcIMS学习之 HTML Viewer定制笔记 续五(5.Javascript纪要)