1 & 1 = 1
0 & 1 = 0
0 & 0 = 0
按位与就是那一位全部是 1 的时候是为 1
- x 表示为 x 的补码 +1
例如 x = 8时 :
x 0 0 0 1 1 0 0 0
- x 1 1 1 0 1 0 0 0
整数运算 x&(-x):
当 x 为 0 时结果为 0
x 为奇数时,结果为 1
x 为偶数时,结果为 x 中 2 的最大次方的因子
x &( x - 1 ):
去掉x最低位的 1
以x为根的满二叉搜索树的最小节点编号、最大节点编号
#include <stdio.h>
int lowbit(int x){
return x&(-x);
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int x;
scanf("%d",&x);
printf("%d %d\n",x-lowbit(x)+1,x+lowbit(x)-1);
}
return 0;
}