关闭

js中使用位运算,让执行效率更高

时间: 2018-05-14阅读: 2550标签: 运算

我们知道平常的数值运算,其本质都是先转换成二进制再进行运算的,而位运算是直接进行二进制运算,所以原则上位运算的执行效率是比较高的,由于位运算的博大精深,下面通过一些在js中使用位运算的实例。


1、判断一个数是奇数还是偶数

除了传统使用求余数%的方式外,还可以使用一个数和1进行按位&操作进行判断,如下

function assert(n) {
    if (n & 1) {
          console.log("n是奇数");
    } else {
          console.log("n是偶数");
    }
}


2、位运算符取整

// 异或运算取整::位运算只对整数有效,遇到小数时,会将小数部分舍去,只保留整数部分。所以,将一个小数与0进行或运算,等同于对该数去除小数部分,即取整数位。
12.9 ^ 0 // 12
-12.9 ^ 0 // -12

// 双否定位操作符取整
~~4.9 // 4
~~(-4.9) // -4

// 左移0位,就相当于将该数值转为32位整数,等同于取整,对于正数和负数都有效。
13.5 << 0 // 13
-13.5 << 0 // -13

// 或运算取整:位运算只对整数有效,遇到小数时,会将小数部分舍去,只保留整数部分。所以,将一个小数与0进行或运算,等同于对该数去除小数部分,即取整数位。
2.9 | 0 // 2
-2.9 | 0 // -2


3、颜色值的转换

16进制颜色值转RGB:  

function hexToRGB(hex){
    var hex = hex.replace("#","0x"),
        r = hex >> 16,
        g = hex >> 8 & 0xff,
        b = hex & 0xff;
    return "rgb("+r+","+g+","+b+")";
}

RGB转16进制颜色值: 

function RGBToHex(rgb){
    var rgbArr = rgb.split(/[^\d]+/),
        color = rgbArr[1]<<16 | rgbArr[2]<<8 | rgbArr[3];
    return "#"+color.toString(16);
}

运行hexToRGB("#ffffff")返回"rgb(255,255,255)",运行RGBToHex("rgb(255,255,255)")返回"#ffffff"。更多关于位运算的请看:巧用JS位运算

 

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/767

关闭

Js算法:千位符号添加

给一个整数,每三位添加一个逗号展示。例如:1234 输出: 1,234。取模 1000,得后三位,依次取模。得到三位数字为元素的数组

javascript如何四舍五入?

javascript四舍五入的方法:方法一、使用toFixed()方法可把Number四舍五入为指定小数位数的数字。方法二、使用round()方法可把一个数字舍入为最接近的整数。

js 浮点小数计算精度问题 parseFloat 精度问题

在js中进行以元为单位进行金额计算时 使用parseFloat会产生精度问题,parseFloat(price*100 * quantity)的计算结果是7693.000000000001 使用Math.round()方法四舍五入,再除100 即为正确的结果 PS:顺便学到了一点:Math.ceil() Math.floor() Math.round() 的区别

(a == 1 && a == 2 && a == 3)为true,你所不知道的那些答案

看到这个标题,一部分同学的第一反应可能是,又是这个老套的问题,人家都讲过好多遍了你还讲。同学,你想错啦。我可不是在炒冷饭。今天我们要从这个问题,延伸出更多的知识,保证超出你的预期

js精准计算

对于浮点数的四则运算,几乎所有的编程语言都会有类似精度误差的问题,只不过在 C++/C#/Java 这些语言中已经封装好了方法来避免精度的问题,而 JavaScript 是一门弱类型的语言,从设计思想上就没有对浮点数有个严格的数据类型,所以精度误差的问题就显得格外突出

JS解决加减乘除浮点类型丢失精度问题

当我们在前端使用js来执行运算时,会有丢失精度的问题。

浮点数运算的误差

在 JavaScript 中整数和浮点数都属于number 数据类型,所有数字都是使用64位浮点数形式储存,遵循IEEE-754双精度标准存储,即便整数也是如此。 所以我们在打印 1.00 这样的浮点数的结果是 1 而非 1.00。

js中的相等==

今天学习 jest,看文档的时候发现 jest 用到了 Object.is(),以前没有见过,所以记录下来,供以后开发时参考,相信对其他人也有用。如果下列任何一项相同,则 Object.is(value1, value2) 返回 true:

es6 扩展运算符 三个点(...)

扩展运算符( spread )是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。

js中的位运算及用法

位运算是在数字底层(即表示数字的 32 个数位)进行运算的。由于位运算是低级的运算操作,所以速度往往也是最快的(相对其它运算如加减乘除来说),并且借助位运算有时我们还能实现更简单的程序逻辑,缺点是很不直观

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!