美文网首页
js 位运算的一个案例解析

js 位运算的一个案例解析

作者: 兮木兮木 | 来源:发表于2021-08-03 23:10 被阅读0次

js中位运算用的比较少,虽然直到位运算效率更高,但是实际项目里却是想不起来用。

偶然看到一段代码,觉得挺巧妙(也许只是我单纯觉得巧妙)就分析了一下。

let res = (Math.floor(Math.random() * 0xff) << 16)
        + (Math.floor(Math.random() * 0xff) << 8)
        +  Math.floor(Math.random() * 0xff)

这段代码会返回一个随机的颜色值,结果转换为16进制就可以直接用于显示颜色。

分析

我们知道 Math.random() 的结果是 [0, 1)0xff转为十进制是255 ,转为 2进制 是1111 1111

所以可以得知 Math.random() * 0xff 的范围就是 [0, 255),也就是[0, 0xff)

而颜色的最大值就是 rgb(255, 255, 255),即0xffffff

转为16进制是 1111 1111 1111 1111 1111 1111

那么 0xff << 16 就是 1111 1111 0000 0000 0000 0000

同理可得

0xff << 8 是 1111 1111 0000 0000

0xff 是 1111 1111

所以 上述代码 res的最大值为 三者相加 即 1111 1111 1111 1111 1111 1111

就是 0xffffff 最小值 自然就是0x000000

所以 上述代码会返回一个随机的颜色值。

在js中使用转为16进制颜色值

// 先获取16进制字符串
let hex = res.toString(16);
// 因为css中颜色需要用6位16进制,有可能随机生成的res转为16进制后不够6位,所以需要在前面补0
let zero = '000000';
let zeroCount = 6 - hex.length;
// 拼接最终的颜色值 例如 #ff0000
let color = '#' + zero.substr(0, zeroCount) + hex;

相关文章

  • js 位运算的一个案例解析

    js中位运算用的比较少,虽然直到位运算效率更高,但是实际项目里却是想不起来用。偶然看到一段代码,觉得挺巧妙(也许只...

  • jade操作HTML中的js

    如何在jade中解析变量 js部分 jade部分 在jade中做运算 js部分 jade部分 jade解析styl...

  • js位运算

    极简主义 位运算符是在数字底层(即表示数字的 32 个数位)进行操作的。 http://www.w3school....

  • node知识点

    如何在jade中解析变量 在jade中做运算 jade解析style class 在jade中解析js 在jade...

  • JS运算解析--减法和按位取反

    一、JS减法 规则 对于JS的减法运算,整体规则是当运算符两边的运算元不为Number时,转换为Number再计算...

  • Javascript 位运算及运用

    Javascript 位运算 参考:巧用JS位运算 ECMAScript 整数有两种类型,即有符号整数(允许用正数...

  • js中的位运算

    在了解位运算之前, 必须先了解一下什么是原码, 反码和补码, 以及二进制与十进制的转换. 原码一个数在计算机中是以...

  • js大数运算,浮点型运算,精度问题

    一、js大数运算 js大数运算的精度问题,以太坊最小单位精度限制是10的18次方,由于js代码处理超过16位的数字...

  • 【转+补充】深入研究js中的位运算及用法

    转载自【博客园-不疯魔不成活】 《深入研究js中的位运算及用法》 什么是位运算? 位运算是在数字底层(即表示数字的...

  • 【加法笔记系列】JS 加法器模拟

    JS 加法器模拟,实现 半加器 全加器 波纹进位加法器 全部代码 补码 & 减法 常规位运算 位运算 & 简单的 ...

网友评论

      本文标题:js 位运算的一个案例解析

      本文链接:https://www.haomeiwen.com/subject/nlsyvltx.html