移位

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

原文地址:https://www.cnblogs.com/an5211/p/7776897.html