JS二进制相关运算总结记录,让自己的代码变得牛逼

本文总结了JavaScript中的二进制运算,包括逻辑位运算符和移位运算符的用法。通过实例解析了位与(&)、位或(|)、位异或(^)、位非(~)以及左移(<<)、右移(>>)、无符号右移(>>>)的原理和应用场景。此外,还探讨了0.1 + 0.2不等于0.3的原因,涉及浮点数在计算机内存中的存储和精度问题。
摘要由CSDN通过智能技术生成

简介:

我们在JS的书写过程中通常都是使用十进制运算,但是也是会有一些少数的场景需要使用到二进制运算,比如在Vue3的源码中就通过使用二进制运算来实现对effect函数的深度进行记录以及比较,来优化响应式以及防止无限循环等等这是我搜集并总结的一些常用二进制运算方法

位运算符有 7 个,分为两类:
逻辑位运算符:位与(&)、位或(|)、位异或(^)、非位(~)
移位运算符:左移(<<)、右移(>>)、无符号右移(>>>)

逻辑位运算符

1.&

“&”运算符(位与)用于对两个二进制操作数逐位进行比较,比较规则如下。

第一个数字的位置 第二个数字的位置 第二个数字的位置
1 1 1
1 0 0
0 1 0
0 0 0

其实就是执行我们常用的&&比较方法一样,1代表true,0代表false,

1 && 1 = true // 1
0 && 1 = false // 0
1 && 0 = false // 0
0 && 0 = false // 0

3 & 9 // 等于1
0000 0000 0000 0000 0000 0000 0000 0011 // 3
0000 0000 0000 0000 0000 0000 0000 1001 // 9
--------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0001 // 1

总结起来就是全部是1结果是1其他都是0

2.|

“|”运算符(位或)用于对两个二进制操作数逐位进行比较,比较规则如下。

第一个数字的位置 第二个数字的位置 第二个数字的位置
1 1 1
1 0 1
0 1 1
0 0 0

这与我们比较运算中的||一样,有一个true就是true,都不是true才是false

1 || 1 = true // 1
0 || 1 = true // 1
1 || 0 = true // 1
0 || 0 = false // 0

3 | 9 // 等于11
0000 0000 0000 0000 0000 0000 0000 0011 // 3
0000 0000 0000 0000 0000 0000 0000 1001 // 9
--------------------------------------------
0000 0000 0000 0000 0000 0000 0000 1011 // 11

应用:
数字类型取整数,运算更加高效,因为其生成的32位是整数存储,所以会直接舍弃小数部分的数值,我们只需和0进行比较就可以返回原来的数值的整数部分,但是其最高只有存储32位,但是我们js内最高存储位数是53位所以使用的时候需要确定数字的最大位数才行

10.2341 | 0 // 10

3.^

“^”运算符(位异或)用于对两个二进制操作数逐位进行比较,比较规则如下。

第一个数字的位置 第二个数字的位置 第二个数字的位置
1 1 0
1 0 1
0 1 1
0 0 0
3 <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Freedom风间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值