基本符号:&按位与 |按位或 ^按位异或 ~按位取反 <<左移 >>右移 <<<无符号左移
性质:位运算使每一位是独立的,可拆开运算。
扩展:其实每个进制数的加减运算都可以独立执行。
这也是可以数位dp的状态分析和转移方式!!!
实际用处:
1、一个数&1 就是二进制的最末位,,, 1就是奇,0就是偶 :用于取数 &111 就是取三位;
2、一个数| 1 就是把二进制的最末位 强行变1;;; :用于赋值 |100 就是把第三位赋值为1;
3、一个数 ^1 就是检验最后一位是否相同;;; :相同返回1,不同返回0;
4、<< 左移 >> 右移;;; :<<1相当于*2^1 ;;;<<2相当于*2^2;;; >>1相当于/2^1 ;;;;; >>2相当于/2^2;;;;
做题被卡了、、、
用二进制存数要特别注意:
比如存四个状态,别用NC的 1 1 1 1 表示,要用 0 1 10 11 表示,用 1 1 1 1常数大的要死、
第3、4位+1,操作就是
1:用<<&截下要操作的位;
2:用<<+加上;
3:用<<&截下修改后的位(适用于循环);
4:用<<&在原位上清零;
5:用<<|在原位上修改;