一、位运算符(&、|、^、>>、<<)
(1)&:只有参加运算(二进制运算)的两位都为1,运算的结果才为1,否则为0
例如: int a=2; a的二进制为:10;
int b=3 ; b的二进制为:11;
a&b=2; a&b的二进制结果为10;
(2)|:只有参加运算(二进制运算)的两位都为0,运算的结果才为0,否则为1
例如: int a=2; a的二进制为:10;
int b=3 ; b的二进制为:11;
a&b=3; a&b的二进制结果为11;
(3):只有参加运算(二进制运算)的两位都不同,运算的结果才为1,否则为0
例如: int a=2; a的二进制为:10;
int b=3 ; b的二进制为:11;
a&b=1; a&b的二进制结果为01;
*(4)>>:右移预算符,通过二进制位数向右移动来得到新的数。
例如: int a=36; // a的二进制为0010 0100
int b=a>>2; //a右移 2位为 0000 1001 即9,此时b的值为9
(5)<<:左移预算符,通过二进制位数向左移动来得到新的数。
例如: int a=4; // a的二进制为0000 0100
int b=a<<2; //a右移 2位为 0001 0000 即16,此时b的值为16
总结:>>右移运算符,右移多少位,新的值为原来的值除以2的n次幂;<<左移运算符,左移多少位,新的值为原来的值乘以2的n次幂(n为位移的位数)。
二、单目运算符(++、--)
(1)++:自增分为前自增和后自增,就是自身加1。
例如: int a=2;
int b=a++; //后自增,此时先把a的值赋值给b,b的值为2,然后a再加1,a此时的值为3;
int c=++b; //前自增,此时先把b的值加1,b此时的值为3,然后赋值给c,c的值为3;
(2)--:自减分为前自减和后自减,就是自身减1。
例如: int a=2;
int b=a--; //后自减,此时先把a的值赋值给b,b的值为2,然后a再减1,a此时的值为1;
int c=--b; //前自减,此时先把b的值减1,b此时的值为1,然后赋值给c,c的值为1;