位运算符
1、按位与运算符
int m=6,b,c=4,d,t;
b=m&c;
/*按位与,两个操作位数中位都为1,结果才为1,否则结果为0。
* 转换为二进制:m=6,0110
* c=4,0100
* 结果为 0100 b=4
*/
System.out.println(b)
2、按位或运算符
int m=6,b,c=4,d;
d=m|c;
/*按位或,两个位中只要有一个为1,那么结果就是1,否则就为0
* 转换为二进制:m=6,0110
* c=4,0100
* 结果为 0110 d=6
*/
System.out.println(d);
3、按位非运算符
int m=6,t;
t=~m;
/*按位非,按位取反,补码
* m=6,0000 0110
* 1111 1001
* 1111 0111
* 结果为 t=-7
* 补码,一个数的原代码名为取反加1,0表示正数,1表示负数
*/
System.out.println(t);
4、按位异或运算符
int m=6,t;
t=~m;
/*按位非,按位取反,补码
* m=6,0000 0110
* 1111 1001
* 1111 0111
* 结果为 t=-7
* 补码,一个数的原代码名为取反加1,0表示正数,1表示负数
*/
System.out.println(t);
5、左移运算符
int p=6,o=2,u;
u=p<<o;
/*左移运算符,在最低位补0,向左移n位,就相当于乘于2的n次方
* p=6,00000110---00011000 结果为24
*/
System.out.println(u);
6、右移运算符
int p=6,o=2,i;
i=p>>o;
/*右移运算符,如果是正数,则在最高位补0,如果是负数,则在最高位补1。向右移n位,就相当于除于2的n次方
* p=6,00000110---00000001 结果为1
* 如果为10000100 则为11100001
*/
System.out.println(i);
7、无符号右移运算符
int p=6,o=2,k;
k=p>>>o;
/*无符号右移运算符,在最高位补0,向右移n位,就相当于除于2的n次方
* p=6,00000110---00000001 结果为1
*/
System.out.println(k);
三元运算符
结构为:boolean表达式?表达式1:表达式2
int m=6,o=2,j;
j=(p>o)?p:o;//如果表达式结果为true,则输出表达式1的值,否则,输出表达式2的值
System.out.println(j);