java位运算的应用场景举例
java位运算符介绍
Java位运算符是对操作数的二进制位进行运算,操作数和计算结果都是整型。操作符如下: &与: 两个二进制位只要有一个为0那么结果就为0,否则结果为1。 |或: 两个二进制位只要有一个为1那么结果就为1,否则结果为0。 ^异或: 任何相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1。 ~取反: 0变1,1变0
用于奇偶校验
位运算是直接操作二进制位,效率较高,一些算法会采用位运算。 奇偶判断是判断一个是奇数还是偶数,如何使用位运算实现呢? 使用与(&)运算可以实现,根据与运算的特点,两个二进制位只要有一个为0那么结果就为0,否则结果为1。 二进制的最低位为1一定是奇数,为0则一定是偶数,我们让该数和1进行与运算,结果为1则是奇数,为0则是偶数。 程序如下:
/** * 位运算应用--奇偶判断 * @author 攀博课堂(www.pbteach.com) * */ public class OperatorDemo9_1 { public static void main(String[] args) throws InterruptedException { int a = 1; int x = 6; int y = 7; //和1与运算,结果为1则为奇数 System.out.println(x & a); //和1与运算,结果为0则为偶数 System.out.println(y & a); } }
输出:
0 1
用于两个数的交换
在实际的开发中需要交换两个变量的值,这是很常见的需求:
已知两个数:
int a = 5; int b = 10;
尝试编写程序交换a和b的值,即实现:
a的值为10 b的值为5
例子:
/** * 位运算应用--奇偶判断 * @author 攀博课堂(www.pbteach.com) * */ public class OperatorDemo9_2 { public static void main(String[] args) throws InterruptedException { //======交换两个数方法1:使用中间变量====== int a = 5; int b = 10; System.out.println(a); System.out.println(b); //定义中间变量,将a赋值给中间变量 int c = a; //将b赋值给a a = b; //将中间变量(a的值)赋值给b b = c; System.out.println(a); System.out.println(b); //======交换两个数方法2:使用异或运算====== int m = 5; int n = 10; //先测试异或运算的特点 //一个数对自己异或一次,再异或另一个数,结果为另一个数 System.out.println(m ^ m ^ n); //m变成了n,输出10 System.out.println(n ^ n ^ m ); //n变成了m,输出5 //下边通过异或交换变量的值 //下边是m和n没有交换之前的异或,存入m m = m ^ n ; //下边的赋值语句相当于n=m ^ n ^ n,将m的值赋值给了n n = m ^ n ; //此时n的值为m,所以m ^ n即m ^ m ^ n ,将n的值赋值给了m m = m ^ n ; System.out.println(m); System.out.println(n); } }
更多 java基础知识
本文内容已加入“”,详细请参考。
上一篇:
IDEA上Java项目控制台中文乱码