位操作有:按位与、按位或、按位异或、按位取反、左移、带符号右移和无符号右移。
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快。