源码:
2&3=2
2|3=3
3^2=1
~-5=4
-2|-3=-1
1>>2=0
1<<2=4
-1>>2=-1
-2<<3=-16
1.java在计算机的运算中,所有的运算都是以补码的形式进行运算的,特别注意负数的位运算
2.算术左移运算本质是:这个数乘以2的n次方,如3<<2=3*4
3.在补码运算得到结果后,如果最高位为1,此时必须转化为原码
public static void main(String[] args) {
//位运算
int a=~2;//按位取反:所有位都取反(包括符号位) 答案:-3
print("~2="+a);
int b=2&3;//按位与:两位都为1时,结果为1 答案:2
print("2&3="+b);
int c=2|3;//按位或 : 两位中只要有一个为1时,结果为1 答案:3
print("2|3="+c);
int d=3^2;//按位异或:两位中一个为1,一个为0,结果为1 答案:1
print("3^2="+d);
int e=~-5;//取反 答案:4
print("~-5="+e);
int f=-2|-3;
print("-2|-3="+f);
//移位运算
int m1=1>>2;//算术右移:符号位不变,高位用符号位补
print("1>>2="+m1);
int n1=1<<2;//算术左移:符号位不变,低位补0
print("1<<2="+n1);
int t1=-1>>2;
print("-1>>2="+t1);
int test01=-2<<3;
print("-2<<3="+test01);
int x1=3>>>1;//逻辑右移:低位溢出,高位补0
print("3>>>1="+x1);
}
public static void print(Object o){
System.out.println(o);
}
运行结果:
~2=-32&3=2
2|3=3
3^2=1
~-5=4
-2|-3=-1
1>>2=0
1<<2=4
-1>>2=-1
-2<<3=-16
3>>>1=1
1.java在计算机的运算中,所有的运算都是以补码的形式进行运算的,特别注意负数的位运算
2.算术左移运算本质是:这个数乘以2的n次方,如3<<2=3*4
3.在补码运算得到结果后,如果最高位为1,此时必须转化为原码