1 . 左移运算符和右移运算符
int number = 20; // 0001 0100 number = number << 1; // 0010 1000 40 左移运算符
number = 20; // 0001 0100 number = number >> 1; // 0000 1010 10 右移运算符
2. 无符号位右移 : 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0,变为正数
没有无符号左移也就是没有 <<< 这个符号
int number = -20; // 1110 1100 -20
number = number << 1; // 1101 1000 -40
number = -20; // 1110 1100 -20
number = number >> 1; // 1111 0110 -10
number = -20; // 1110 1100 -20
number = number >>>1; // 0111 0110 118
3. ^ 是位异或运算符
a ^= b; 相当于 a = a^b a = 5; b=4;
相当于 (101)^(100) = 001 a = (001) = 1
4. &,双目运算符:将两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上
①: 该位只要有一个值为0结果为0,否则结果为1。
②: 如果两数位数不同,则较短数高位补零,再运算
170&204 = 1010 1010 & 1100 1100 = 1000 1000 = 136
5. a<<=n 等价于a=a<<n