按位运算符
Java定义了几个按位运算符,可以将其应用于整数类型long,int,short,char和byte。
按位运算符对位执行,并执行逐位运算。假设a = 60和b = 13; 现在以二进制格式,他们将如下 -
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a | b = 0011 1101
a ^ b = 0011 0001
a = 1100 0011
假设整数变量A保持60,变量B保持13,则 -
public class Test { public static void main(String args[]) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = " + c ); c = a >> 2; /* 15 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 15 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); }}
输出结果 a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 15 a >>> 15
总结:
&(按位和) | 如果二进制AND运算符存在于两个操作数中,则二进制AND运算符将对结果复制一位。 | (A和B)将给出12是0000 1100 |
| (按位或) | 二进制OR运算符如果存在于任一操作数中,则复制一位。 | (A | B)将给出61,其为0011 1101 |
^(按位异或) | 二进制XOR操作符复制该位,如果它设置在一个操作数中,而不是两者。 | (A ^ B)将给出49,其为0011 0001 |
(按位称赞) | 二进制补码运算符是一元的,具有“翻转”位的作用。 | (A)将给出-61,由于有符号的二进制数,它是2 0的补码形式的1100 0011。 |
<<(左移) | 二进制左移操作符。左操作数值左移由右操作数指定的位数。 | A << 2将给出240是1111 0000 |
>>(右移) | 二进制右移操作符。左操作数值被右操作数指定的位移动。 | A >> 2将给出15是1111 |
>>>(零填补右移) | 右移零填充操作符。左操作数值右移由右操作数指定的位数,移位值用零填充。 | A >>> 2将给出15是0000 1111 |
时间: 2024-12-29 23:34:31