1. 判断奇偶数
1 | // 奇数最后一位二进制为 1,偶数最后一位二进制为 0 |
2. 求一个数的负数
1 | return (~n + 1); |
3. 求绝对值
1 | /* |
4. 判断一个数转为二进制后的第i位数是0还是1
比如85的二进制为1010101.
我们要求第五位二进制位数上是0还是1,那么我们可以通过位运算符的移位操作来进行
比如我们可以将85的二进制1010101与1向左移4位来做与运算
就是1010101 与 0010000做与运算,看第五位是0还是1,
得出这个结果,我们可以将结果0010000右移4位然后将结果与1进行比较即可
1 | return ((((x&(1<<4))>>4)==1) ? 1 : 0 ); |
5. 找出唯一成对的数
1 | function findRepeatNum () { |
6. 找出落单的这个数
相同两个数异或结果是0, 任意一个数和0异或的结果还是自己,异或满足交换律;
1 | $arr = [1, 3, 9, 1, 3, 4, 5, 4, 5]; |
7. 二进制中一的个数
首先二进制数有这么一个性质,当一个数减去1再与原来的数字去&运算,
得到的结果其实是将原来的那个数字的最右边的那个1变成0后的数字。
/举个粒子:
10101010
10101010 - 1 = 10101001
10101010 & 10101001 =
10101000/
1
2
3
4
5
6
7
8 function bitNums($i) {
$count = 0;
while ($i != 0) {
$i = ($i - 1) & $i;
$count++;
}
return $count;
}
8. 判断整数是不是2的整数次方;
1 | /* |
9. 将整数的奇偶互换
1 | /* |