文档章节

JavaScript 位运算笔记

smalldragonluo
 smalldragonluo
发布于 2014/06/16 13:08
字数 272
阅读 269
收藏 2

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

以下结果在 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;

© 著作权归作者所有

共有 人打赏支持
smalldragonluo
粉丝 2
博文 9
码字总数 5320
作品 0
南岸
《javascript语言精粹》读书笔记(一)

第一章 精华 任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多。但javascript的流行却不受他的质量影响。javascript为何如此流行?因为他是web浏览器的语言...

倪闯
2015/03/11
0
3
《JavaScript权威指南》笔记(二)

第二篇笔记的内容主要涉及:数据类型转换,函数、对象、数组的创建以及null与undefined的比较。 1. javascript中类型转换的方法: (1)数字-->字符串: number+" "; String(number); number...

小微
2012/08/28
0
7
JavaScript学习笔记(二)

JavaScript的数据类型分为:原始类型和对象类型。JavaScript中有两个特殊的原始值:null(空)和undefined(未定义)。 JavaScript中所有数字均用浮点数值表示。javaScript采用64位浮点格式表示数...

第五郎
2014/03/29
0
0
《JavaScript语言精粹》笔记

0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。 1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数...

dwqs
2015/01/20
0
2
0.1 + 0.2不等于0.3?为什么JavaScript有这种“骚”操作?

写在前面 随着消费观念的改变,线上消费已经成为大众生活中不可或缺的一部分。在保证消费安全和用户隐私的同时,精准度也是必不可少的一环。试想一下,用户在一款产品上消费,结算金额出错,...

Gladyu
09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LSM-Tree 大数据索引技术

一、LSM-Tree概述 核心思想就是放弃部分读能力,换取写入能力的最大化。LSM-Tree ,这个概念就是结构化合并树(Log-Structured Merge Tree)的意思,它的核心思路其实非常简单,就是假定内存...

PeakFang-BOK
15分钟前
0
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
21分钟前
0
0
Weblogic补丁升级操作步骤

linux平台: weblogic1036 1:停止weblogic服务 2:打FMJJ补丁 a:获取weblogic_home目录并执行命令:export weblogic_home="/weblogic/wls1036_x64",(此目录一般为目录“user_projects”上...

fang_faye
34分钟前
0
0
04-《Apache Tomcat 9 User Guide》之部署项目

1.Introduction Deployment is the term used for the process of installing a web application (either a 3rd party WAR or your own custom web application) into the Tomcat server. 部......

飞鱼说编程
34分钟前
0
0
一位十年的老码农他眼中的区块链

大家可能已经听说过比特币、莱特币、以太币等等,以及它们作为一种新货币在市场上的潜力。 有趣的是,很多投资比特币的人也提到了区块链之类的东西。 显然,这项技术是比特币等其他东西的"基...

小刀爱编程
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部