位操作符

位操作有:按位与、按位或、按位异或、按位取反、左移、带符号右移和无符号右移。

1、按位与(&或者and):

  2&3 = 0000 0010 & 0000 0011 = 0000 0010 = 2

2、按位或(|或者or):

  2|3 = 0000 0010 | 0000 0011 = 0000 0011 = 3

3、按位异或(^或者xor):

  2^3 = 0000 0010 ^ 0000 0011 = 0000 0001 = 1

4、按位取反(~或者not):

  ~4 : 二进制原码为:0000 0100 

      原码取反为: 1111 1011

  这时要把1111 1011 转化为补码形式:

  1111 1011 ---->  1000 0100 ---->    1000 0101

  所以得出的结果为-5;

5、左移(<<或者shl):

  4 << 1 = 0000 0100 << 1 = 0000 1000 = 8

  相当于乘以2(2的n次方,n等于要移动的位数)

6、右移(>>或者shr):

  4 >> 1 = 0000 0100 >> 1 = 0000 0010 = 2、

  相当于除以2(2的n次方,n等于要移动的位数)

注:

  1、右移分带符号和不带符号

  2、通常认为位操作比运算要快,左移1位比*2快,右移1位比/2快。

原文地址:https://www.cnblogs.com/coolYuan/p/9244816.html