首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS按位-为了按位或(|)操作,Math.random() *2被解释为0和1的规则是什么?

JS按位或操作符(|)用于将两个操作数的每个对应位进行逻辑或运算。在执行按位或操作时,JS会将操作数转换为32位有符号整数,然后对每个对应位进行逻辑或运算。

对于Math.random() * 2,Math.random()函数返回一个大于等于0且小于1的随机浮点数。乘以2后,结果范围为[0, 2)。在进行按位或操作之前,JS会将这个结果转换为32位有符号整数。

转换规则如下:

  • 如果结果是正数,则直接取整数部分,例如1.5会被转换为1。
  • 如果结果是负数,则先取绝对值,再取整数部分,最后将结果取负数,例如-1.5会被转换为-1。

最后,对转换后的整数进行按位或操作。

应用场景:

按位或操作常用于处理二进制数据,例如进行位掩码操作、权限控制等。

腾讯云相关产品:

腾讯云提供了丰富的云计算产品,其中与开发相关的产品包括云服务器(CVM)、云数据库MySQL版、云函数(SCF)等。您可以通过以下链接了解更多信息:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js 代码常规一些骚操作

因此,之前有大牛提出,不要在 JS 中使用运算: Javascript 完全套用了 Java 运算符,包括与&、|、^、非~、左移>0补足右移>>>...但是在我看来,如果对 JS 运用达到炉火纯青地步,能避开各种“Feature”的话,偶尔用一下运算符也无所谓,还能提升运算性能,毕竟直接操作是计算机最熟悉二进制。...运算原理可以参考这篇文章 《运算符在JS妙用》 1.使用左移运算符 << 迅速得出2次方 1 << 10 // 1024, 即 210次方 // 但是要注意使用场景 a = 2e9; /.../ 2000000000 a << 1; // -294967296 2.使用 ^ 切换变量 0 1 // if 判断 if (toggle) { toggle = 0; } else { toggle...一些可以替代 undefined 操作 “”._, 1.._ 0[0] 图片 void 0 会比写 undefined 要快一些 let d = void 0; console.log

31730

大神你写这么骚代码,不怕揍么?

因此,之前有大牛提出,不要在 JS 中使用运算: Javascript 完全套用了 Java 运算符,包括与&、|、^、非~、左移>0补足右移>>>...但是在我看来,如果对 JS 运用达到炉火纯青地步,能避开各种“Feature”的话,偶尔用一下运算符也无所谓,还能提升运算性能,毕竟直接操作是计算机最熟悉二进制。 1....使用左移运算符 << 迅速得出2次方 1 << 2// 4, 即 22次方 1 << 10// 1024, 即 210次方 // 但是要注意使用场景 a = 2e9...使用toString(16)取随机字符串 Math.random().toString(16).substring(2, 15); .substring() 第二个参数控制取多少 (最多可取13)...一些可以替代 undefined 操作 ""._, 1.._ 0[0] ?

34420

JS小技巧」随机不重复ID,模板标签替换,XML与字符串互转,快速取整

01 产生随机不重复ID 有时候在没有第三方类库情况下,我们希望希望产生随机且不重复ID,这时我会使用「随机数」搭配「时间戳」方式,首先使用Math.random()产生01之间约16~17随机浮点数...Math.random().toString(36).substr(2,n); // 截取小数点后部分,n在实际应用中修改成你需要位数 第二步使用Date.now()取得目前毫秒数,总共有13数...Math.round()四舍五入、Math.floor()返回小于等于给定数字最大整数 Math.ceil()函数返回大于等于一个给定数字最小整数(无条件进位)三种方法,不过如果通过两个「取反两次...() ~是取反运算,~~是取反两次。...在这里~~作用是去掉小数部分,因为运算操作值要求是整数,其结果也是整数,所以经过位运算都会自动变成整数。

3.2K20

八种方法(实现两个数互换),绝了绝了!

在介绍第四种方法之前,首先要跟大家介绍一下Java中"异"操作符(^)。 异操作符是Java中操作一种,那么什么是操作符呢?...而操作符会对两个参数中对应,也就是对用二进制表示两个参数相对应01,执行布尔代数运算,并最终生成一个结果。...事实上,操作符来源于C语言面向底层操作,这种操作经常需要直接操纵硬件,设置硬件寄存器内二进制。而Java设计初衷是嵌入电视机机顶盒内,所以这种面向底层操作保留了下来。...了解了操作概念,那么接下来,我们来了解"异"操作 如a ^ b,若a、b两个值不同,则异结果为1;若a、b两个数相同,则异结果为0。...或者明白运算朋友也可以通过字面意思来理解,若两数相异(要么是01,要么是10),则执行运算;若两数相同(同为0同为1),则结果为0

48110

重学js之JavaScript基本概念(中)- 操作

、浮点数值对象,规则如下: 1、应用于数字字符字符串时候,先将其转换为数字值, 在执行加减 1 操作,字符串变量变成数值变量。...操作符由一个字符号(&)表示,它有两个操作符数。...从本质上来讲,操作就是将两个数值每一对齐,根据以下规则,对相同位置上两个数执行AND操作: 结果:全1才为1,有0返回0 第一个数值第二个数值结果111100010000 1.2.3...(OR) 由一个竖线符号(|)表示,同样也有两个操作数,操作结果遵循下表。 第一个数值第二个数值结果111101011000 结果:有1返回1,全0返回0 1.2.4....(XOR) 操作符由一个插入符号 (^)表示,也是两个操作数,结果遵循下表: 第一个数值第二个数值结果110101011000 结果:两个数只有1个为1时候才返回1,同时为1同时为

52330

大话 JavaScript(Speaking JavaScript):第十一章到第十五章

操作数(参见运算符): 无符号右移运算符(>>>):32 ,无符号,范围[0, 2³²) 所有其他运算符:32 ,包括符号,范围[−2³¹, 2³¹] “字符代码”,UTF...(|) 如果掩码,第二个操作数,为 0,则不改变任何,结果是第一个操作数,强制转换为有符号 32 整数。...+1) 1 > ToInt32(Math.pow(2, 32)-1) -1 移位运算符 对移位运算符也适用与相同技巧:如果你移动零,移位操作结果是第一个操作数,强制转换为 32 整数。...因此,4294967295,解释为有符号 32 整数,当转换为 JavaScript 数字时变为-1: > ToInt32(4294967295) -1 ToInt32()在通过操作获取 32 整数中有解释..., 2)).toString(2) '0' 二进制操作符 JavaScript 有三个二进制操作符: number1 & number2与): > (parseInt('11001010'

53710

关于数字前端面试题

当一个变量显式类型转换时(利用Number()方法),遵循规则是什么? Number([])Number([1,2,3])值分别是什么?说明其原理?...比如下面的方法: 这三种方法都是可以,分别说一下: 8.84|0或者 写成0 | 8.84 都是一样,从语法上看,他是让0与指定值进行”运算,在JavaScript中,它先对指定值执行了ToInt32...转换,在按进行运算,所以最终结果就是把指定值转换为32整数。...对于布尔型:true结果为1,false结果为0; 对于undefined: 结果为NaN 对于null:结果为0 对于字符串类型:遵循数字常量相关规则语法。处理失败时会返回NaN。...如果没有就是使用toString()返回来进行强制类型转换。 举个例子来加强一下记忆: 6.Number([])Number([1,2,3])值分别是什么?说明其原理?

1.4K60

【C运算&基础+面试题】运算中阶详解及面试题

(二进制)操作2-1与&(类似乘法) 2-2.(类似加法) 2-3.^ 三....1,左边丢弃,右边补0 图示: 代码结果: 1-2.右移操作符>>(除法) 用法: int a=-7>>1;//为例 规则: 将a二进制序列补码向右移动1 至于后续操作是什么呢...printf("%d",c); 图示: 代码结果: 2-2.(类似加法) 技巧: 相当于加法 规则: 只有两个数二进制补码同时为0,结果才为0,否则为1 刷题技巧:...0|5,0|7 任何数0|保持不变 1|5,1|7 任何数1|设置为1 用法: int c=3 | 5;//为例 printf("%d",c); 图示: 代码结果: 2-3....^ 深入点了解^:纯粹 规则: 逐比特,相同为0,不同为1 刷题翻译: 支持结合律交换律 任何数0,都是他本身 用法: int c=3^5;//为例 printf

29930

Lua连续教程之Lua中数值

为了避免两个整型值相除两个浮点型值相除导致不一样结果,除法运算操作永远是浮点数且产生浮点型值结果: >3.0 / 2.0 --1.5 >3 / 2 --1.5 Lua5.3针对整数除法引入了一个称为...这样,floor除法就可以与其他算术运算一样遵循同样规则:如果操作数都是整型值,那么结果就是整型值,否则就是浮点型值 >3 // 2 --1 >3.0 // 2 --1.0 >6 // 2...特别地,对于任意指定正常数K,即使x是负数,表达式x%K结果也永远在[0,K-1]之间。例如,对于任意整数值i,表达式i%2结果均是01。 对于实数类型操作数而言,取模运算有一些不同。...通过与零进行运算,可以把浮点型值强制转换为整型值: > 2^53 -- 9.007199254741e+15 (浮点型值) > 2^53|0 -- 9007199254730992...(连续) > (位移位) &(与) ~() |() = ~= == and or 在二元运算符中,除了幂运算链接操作符是右结合

4.1K20

C语言(7)----操作

1.操作定义 操作是什么操作符相当于标点符号之类一系列符号。...那么移位操作具体使用也是根据这个原理来。 << 左移操作符 移位规则:左边抛弃、右边补0 >> 右移操作符 移位规则:首先右移运算分两种: 1. 逻辑右移:左边⽤0填充,右边丢弃 2....B.操作符: (操作都是二进制)特殊运算方式,具有自己逻辑运算规律 &:与 运算规则:有00,全11 | : 运算规则:全00,有11 ^: 运算规则:相同为0,相异为...在位操作中,操作也符合这个逻辑,只不过它是进制来进行:只要对应位置上有一个为1,结果就为1。...也就是说,像char类型字节长度,也就是低于int类型字节长度是不够用来表达式整形运算,这个时候为了获得这个精度,表达式中字符短整型操作数在使⽤之前转换为普通整型,这种转换称为整型提升。

9910

优雅使用运算,省老多事了!!!

与 & 对比两个二进制数,如果对应都为 1,则结果为 1,否则为 0 console.log((1 & 3) == 1) // true 对比图例如下所示: 2.... | 对比两个二进制数,如果对应有一个 1,则结果为 1,否则为 0 console.log((1 | 3) == 3) // true 对比图例如下所示: 3....异 ^ 对比两个二进制数,如果对应有且只有一个 1,则结果为 1,否则为 0 console.log((1 ^ 3) == 2) // true 对比图例如下所示: 4....非 ~ 操作二进制数取反,即 1001,任何数非运算符计算结果都是 -(x + 1) const a = -1 // ~a = -(-1 + 1) = 0 console.log...13 这样子我们就对一个用户权限进行了增加,规则我们上面也给过图例,这里大家可以自己尝试理解一下,无非是两个二进制数 1001 0100 之间运算,只有其中一1 则为 1,这两个数字计算结果自然是

10410

社招前端必会面试题

2)清零如果想将一个单元清零,即使其全部二进制0,只要与一个各位都为零数值相与,结果为零。2. 运算符(|)定义: 参加运算两个对象二进制进行“”运算。...异运算符(^)定义: 参加运算两个数据二进制进行“异”运算。...取反运算符 (~)定义: 参加运算一个数据二进制进行“取反”运算。运算规则:~ 1 = 0~ 0 = 1总结:对一个二进制数取反,即将0110。...右移运算符(>>)定义: 将一个数各二进制全部右移若干,正数左补0,负数左补1,右边丢弃。例如:a=a>>2 将a二进制右移2,左补0 或者 左补1得看移数是正还是负。...例如:10原码为0000 1010(2)反码正数反码与原码相同,如:10 反码为 0000 1010负数反码为除符号取反,即0110

49220

Python数据结构详解(一)

1.4.2 布尔类型转换 在Python中,每种类型都可以解释为布尔类型,例如:None,0,”“,[],(),{} 解释为False;非零数值,非空字符串解释为True print(bool(None...运算:执行运算时会将整数转化为二进制形式,然后从最低位开始依次每位对齐,然后执行与(&)、(|)、(^)、反(~)等操作。...与,只有两个都为1时才为1,其他都为0,只要有一个为1结果为1,两个都为0时,结果才为0时,两个相同是为0,两个不同时为1。...反,原来为1,现在则为0,原来为0,现在则为1 纸上得来终觉浅,绝知此事要躬行~,上栗子!...max() 获取指定数值或者指定序列中最大值 1.7 数字格式化输出 在输出数字时候,有时候需要对其进行格式化操作,比如只希望保留2小数,整数位4输出,不足补0,这时候我们就要用到format函数了

901100

Js操作

Js操作符 JavaScript数字类型为双精度IEEE 754 64浮点类型,但是在位运算中运算符用于32数字上, 任何数字操作都将转为32, 运算结果再转化为Js数字类型。...描述 所有的操作操作数都会被转成补码形式有符号32整数,从概念上讲,逻辑操作遵守下面规则操作转换成32整数,用比特序列(01组成)表示,超过32数字会被丢弃。...& 与(AND) 对于每一个比特,只有两个操作数相应比特都是1时,结果才为1,否则为0,真值表如下: a b a & b 0 0 0 0 1 0 1 0 0 1 1 1 我们可以使用&操作符来判断数值奇偶性...console.log(7 & 1); // 1 console.log(8 & 1) ; // 0 | (OR) 对于每一个比特,当两个操作数相应比特至少有一个1时,结果为1,否则为...// 0 ^ (XOR) 对于每一个比特,当两个操作数相应比特有且只有一个1时,结果为1,否则为0,真值表如下: a b a ^ b 0 0 0 0 1 1 1 0 1 1 1 0 我们可以使用

75220

刘谦春晚魔术揭秘:约瑟夫环数学魅力,JS实现下!

今年春晚刘谦魔术堪称惊艳全场,那么他这个魔术实现原理是什么呢?今天,就让咱们使用 JS 是实现这个魔术。...情景二:牌数为2n次幂 设想有8张牌,编号从1到8。在第一轮中,我们会移除所有偶数编号牌(2、4、6、8),剩余1、3、5、7。这些剩下顺序放到底部,问题就变成了4张牌情况。...譬如2次,最后变成CDABCDAB;譬如3次,最后换成DABCDABC。但无论怎么操作,第4张第8张牌都是一样。 将顶部3张牌随意插入中间,确保第1第8张牌相同。这一步非常重要!...分别是xxxxxBxxxxB。 循环7次,把最顶上放到最底下,男生女生分别会是xxxxBxxxBxx。 最后执行约瑟夫环过程!操作到最后只剩下1张。...(Math.random() * 2) + 1; // 随机选择12 for (let i = 0; i < maleNum; i++) { // 循环maleNum次,移除牌堆顶牌 arr.shift

23110

整数浮点数在内存中存储​(大小端详解)

一、整数在内存中存储 在讲解操作时候,我们就讲过了下面的内容: 整数2进制表示方法有三种,即 原码、反码补码​ 三种表示方法均有符号和数值两部分,符号都是用0表示“正”,用1表示“负...”,而数值最 高位当做符号,剩余都是数值。...反码:将原码符号不变,其他依次取反就可以得到反码。 补码:反码+1就得到补码。​...3.2 浮点数取过程​ 指数E从内存中取出还可以再分成三种情况:​ E不全为0不全为1​ 这时,浮点数就采用下面的规则表示,即指数E计算值减去127(1023),得到真实值,再将有效数字M前加上第一...这样做是为了表示±0,以及接近于0很小数字。​

46910
领券