首先上原文章地址:blog.csdn.net/u014395524/…
首先上原文章地址:www.w3school.com.cn/js/js_bitwi…
首先上原文章地址:leetcode-cn.com/problems/di…
首先上原文章地址:www.cnblogs.com/mopagunda/p…
骚操作来了
1、按位非(NOT)(~)
- 操作符由一个波浪线表示(~),对位求反(0变为1,1变为0),结果是返回数值的反码。
- 对一个整数 num 按位取反,结果等于 它的相反数减1,即 ~num = -num - 1。
- ~~6.7890809 === Math.floor(6.7890809)
2、按位与(AND)(&)
- 可以用一个数和1进行按位&操作来判断其奇偶性,比如 num&1,若为1,则num是奇数;若为0,则num是偶数。
4、按位异或(XOR)(^)
- “异或运算”有一个特殊运用:连续对两个数a和b进行三次异或运算(aˆ=b; b^=a; a^=b;),可以互换它们的值。
5、左移 (<<)
操作符由两个小于号(<<)表示,会将数值的所有数位向左移动指定的位数,右边的空位用0填充。左移不影响操作数的符号位。
`x<<i`相当于`x*2^i` eg:10<<1 === 10*(2**1)
6、有符号右移 (>>)
操作符由两个大于号(>>)表示,会将数值的所有数位向右移动指定的位数,同时保留该数的符号。
`x>>i`相当于`x/2^i` eg:10>>i === 10/(2**1)