移位运算符:
- 左移运算符 <<
左移运算符相当于乘以2,并且效率要高出乘法许多,尽量使用左移运算符。 - 右移运算符 >>
右移运算符,移出最右边就被丢弃,符号的最高位会被一起移动,并且大多数 C、C++编译器规定,如果原符号位是1,则右移时高位就补充1,原符号位为0,则右移时高位就补充0。右移动相当于除以2,但是结果会往小数取整。
例如:
-25 >>4 = -2
-2 >> 4 = -1;
18 >> 4 = 1;
举例:两个 int 类型的值 a和n(0<= n <31),要求写一个表达式,使该表达式的值和 a 的第 n 位相同。
答案:
- (a>>n) & 1;
- (a&(1<<n))>>n