参考链接
位运算符
位与运算符 (&) 对参与运算的两数的二进制形式(补码形式)进行位与,对应的两个二进制位均为1时, 结果为1,否则为0
int a = 2 ;
int b = 1 ;
int c = 3 ;
cout << ( a & b) << endl;
cout << ( a & c) << endl;
位或运算符(|) 对参与运算的两数的二进制形式(补码形式)进行位或,对应的两个二进制位只要有一个为1时,结果为1, 否则为0
int a = 2 ;
int b = 1 ;
int c = 3 ;
cout << ( a | b) << endl;
cout << ( a | c) << endl;
位异或运算(^) 对参与运算的两数的二进制形式(补码形式)进行位非,对应的两个二进制位相异时,结果位1,否则为0
int a = 2 ;
int b = 1 ;
int c = 3 ;
cout << ( a ^ b) << endl;
cout << ( a ^ c) << endl;
按位取反运算符 (~) 求反运算符为单目运算符,具有右结合性,对参与运算的数的二进制位进行取反操作
int a = 2 ;
int b = 1 ;
int c = 3 ;
cout << ~ a << endl;
cout << ~ b << endl;
cout << ~ c << endl;
左移运算符 (<<) 左移n位即乘2的n次方,把<<左边的数的二进制位全部左移n位, n为<<右边指定,高位丢弃,低位补0
int a = 2 ;
int b = 1 ;
int c = 3 ;
cout << ( a << 1 ) << endl;
cout << ( b << 1 ) << endl;
cout << ( c << 1 ) << endl;
右移运算符 (>>) 右移n位即除以2的n次方,把<<左边的数的二进制位全部右移n位,n为<<右边指定,(对于有符号数, 符号位向右移动后,正数的话补0,负数补1, 对于有符号数,在右移时,符号位将随同移动: 当为正数时, 最高位补0, 而为负数时,符号位为1, 也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位. 最高位是补0或是补1 取决于编译系统的规定)
int a = 2 ;
int b = 1 ;
int c = 3 ;
cout << ( a >> 1 ) << endl;
cout << ( b >> 1 ) << endl;
cout << ( c >> 1 ) << endl;