您的位置:首页 > 编程语言 > Java开发

javaSE基础_位运算及位移运算

2011-08-13 10:59 381 查看
源码:

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=-3

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

3>>>1=1

总结:

1.java在计算机的运算中,所有的运算都是以补码的形式进行运算的,特别注意负数的位运算

2.算术左移运算本质是:这个数乘以2的n次方,如3<<2=3*4

3.在补码运算得到结果后,如果最高位为1,此时必须转化为原码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: