按位运算:
int a=60; //111100
int b=13; //001101
//注意括号必须加上,而且&、|并不是&&、||
//&:按位&
//a&b 比较每一位,和逻辑与的结果一样
//a=60 111100
//b=13 001101
//a&b 001100 = 12
cout<<"a&b = "<<(a&b)<<endl;
// |:按位或
//a|b 比较每一位,和逻辑或的结果一样
//a=60 111100
//b=13 001101
//a|b 111101 = 61
cout<<"a|b = "<<(a|b)<<endl;
//~a是按位取反 !!!!!!!!!
/*
~9的计算步骤:
转二进制:0 1001
计算补码:0 1001
按位取反:1 0110
转为原码:
按位取反:1 1001
末位加一:1 1010
符号位为1是负数,即-10
*/
cout<<"~9 = "<<(~9)<<endl;
//异或运算 ^ 每位相同为0,不同为1
//a=60 111100
//b=13 001101
//a^b 110001 = 49
cout<<"a^b = "<<(a^b)<<endl;
移位运算:
<<左移
左移:向左移动,右补0
移动n位,则相当于原数* 2^n;
>>右移
向右移动,无符号左补零,有符号(整数左补0,负数左补零或1)