新知识 | 位运算符(NOT)

简介: “NOT运算符,反转所有位,整数取反,负数取整”

NOT运算符,反转所有位,整数取反,负数取整

01

~

~x 为 对任一数值 x 进行按位非操作的结果为 -(x + 1)

例如:

~5 = -(5+1) = -6

~(-5) = -(-5+1) = 4

~(1.2) = - (1.2+1) = -2

以前使用:

const a = [1, 2, 3, 4, 5]
if (a.indexOf(1) > -1) {
    console.log('存在'); 
}
//5.206ms

使用~的话:

const a = [1, 2, 3, 4, 5]
if (~a.indexOf(1)) {
    console.log('存在');
}
//1.186ms

可以达到同样的效果,并且代码看起来简洁不少,同时后面的运算速度快于前面的。

02

~~

~~x 为 对任一数值 x 进行按位非操作的结果为 -(-(x+1) + 1)

例如:

(-2.99) = -(-(-2.99+1)+1)= -2

以前:console.log(parseInt(-2.99)); //0.417ms

现在:console.log((-2.99)); //0.327ms

使用NOT运算符的速度高于其他

相关文章
|
6月前
|
NoSQL 容器 消息中间件
实战技巧位运算
实战技巧位运算
|
2月前
|
存储 编译器 C语言
【C语言基础考研向】07逻辑运算符与赋值运算符
本文介绍了C语言中的逻辑运算符与逻辑表达式、赋值运算符以及求字节运算符`sizeof`。逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),其优先级规则与数学运算符类似。通过示例展示了如何用这些运算符判断闰年及逻辑非的运算方向。此外,文章还解释了左值与右值的概念及其在赋值运算中的应用,并介绍了复合赋值运算符的使用方法,如加后赋值`+=`和乘后赋值`*=`。最后,通过`sizeof`运算符示例展示了如何获取变量的字节大小。
|
6月前
|
C#
C位运算符精讲:提升编程效率的秘诀
C位运算符精讲:提升编程效率的秘诀
38 0
|
6月前
|
编译器 C语言 C++
C/C++运算符超详细讲解(系统性学习day5)
C/C++运算符超详细讲解(系统性学习day5)
|
运维 算法 Linux
Python编程 位运算符
本章将会讲解如何使用Python运算符中的位运算符。
133 1
Python编程 位运算符
C#编程-25:数学运算符复习
C#编程-25:数学运算符复习
100 0
C#编程-25:数学运算符复习
|
设计模式 机器学习/深度学习 算法
数学,离一个程序员有多近?
for循环没算法快 1. for 循环实现 2. 算法逻辑实现 3. 耗时曲线对比 四、Java中的算法运用 1. HashMap的扰动函数 2. 斐波那契(Fibonacci)散列法 3. 梅森旋转算法(Mersenne twister) 五、程序员数学入门
259 0
数学,离一个程序员有多近?
|
程序员
程序员数学(3)--一元一次方程
本文目录 1. 为什么要用方程 2. 一元一次方程 3. 等式的性质 4. 解一元一次方程 4.1 合并同类项 4.2 移项 4.3 去括号 4.4 去分母 5. 总结
178 0
程序员数学(3)--一元一次方程
|
程序员
程序员数学(15)--分式
本文目录 1. 分式定义 2. 分式的基本性质 3. 分式的约分 4. 分式的通分 5. 分式的乘法、除法、乘方法则 6. 分式的加减法法则 7. 分式方程
137 0
程序员数学(15)--分式