vue3发布以后,经常听到按位运算,到底什么是按位运算,了解以下4点,轻松掌握常见按位运算。为什么大佬们要搞这些骚操作呢,很重要的一个原因就是快。位运算是在二进制层面上进行的运算,更贴近底层,比高级编程语言少了编译的过程。
一、按位非
运算符是~,作用是将每位二进制取反
十进制2的二进制表示为:
0000,0010 -> 1111,1101(每位都取反) 这是内存中的保存形式。
记忆方法是~(A) = -(A+1)
常用技巧
"~~"(中间没有空格)两个破折号
例如:~~(20/3) ~~的作用是去掉小数部分,结果等于 6
二、按位与
&是二元运算符,它以特定的方式的方式组合操作数中对应的位,如果对应的位都为1,那么结果就是1, 如果任意一个位是0 则结果就是0。
1 & 3的结果为 -> 1 那我们来看看他是怎么运行的
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1
根据 & 的规则 得到的结果为 0 0 0 0 0 0 0 1,十进制表示就是1
常用技巧
用于整数的奇偶性判断
一个整数a, a & 1 这个表达式可以用来判断a的奇偶性。二进制的末位为0表示偶数,最末位为1表示奇数。使用a%2来判断奇偶性和a & 1是一样的作用,但是a &
1要快好多。
三、按位或
|运算符跟&的区别在于如果对应的位中任一个操作数为1 那么结果就是1。
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1
所以 1 | 3的结果为3
四、^ 按位异或
^运算符跟|类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0。
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1
所以 1 ^ 3的结果为2