位运算总结

位运算总结

所有数据在计算机中都是以二进制的形式存储的,两个数值间的位运算就是对他们的二进制形式进行处理。在Java中,位运算有以下这些:

1.与运算

与运算的符号为&,两个数字进行与运算,每一位上有0就变为0,都是1则为1,例:

1 & 0 = 0; // 全部1和全部0做与运算为全部0

2.或运算

或运算的符号为|,两个数字进行或运算,每一位上有1就变为1,都是0则为0,例:

1 | 0 = 1; // 全部1和全部0做或运算为全部1

3.异或运算

异或运算的符号为^,两个数字进行异或运算,每一位上数字相同则为0,不同则为1,例:

1 ^ 0 = 1; // 全部1和全部0,每一位都不相同,故结果全为1

异或运算有一个简单的应用是交换两个变量:

int a, b;
a = a ^ b;
b = a ^ b;
a = a ^ b; // a 和 b 已完成交换

4.取反运算

取反运算的符号为~,对某个数字进行取反运算,每一位上数字0变为1,数字1变为0,例:

~0 = -1; // 全为1,即-1;

5.左移运算

左移运算的符号为<<,对某个数字进行左移运算,该数字的二进制数就整体向左移动一定位数,右边使用0来补充,例:

1 << 1 = 2;

6.带符号右移运算

带符号右移运算的符号为>>,对某个数字进行带符号右移运算,该数字的二进制数就整体向右移动一定位数,左边使用符号位(本来是0就补0;本来是1就补1)来补充,例:

2 >> 1 = 2;
-2 >> 1 = -1;

7.无符号右移运算

无符号右移运算的符号为>>>,对某个数字进行无符号右移运算,该数字的二进制数就整体向右移动一定位数,左边使用0来补充,例:

2 >>> 1 = 2;
-2 >>> 1 = 2147483647;

值的注意的是移位运算符只能处理整数运算符,对于char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值