/*
* 位运算符:直接作用于位的
* 作用:因为我们直接操作的位,可以提高计算的效率
* &(按位与):全1则1,有0则0: 作用:定向清0
* |(按位或):全0则0,有1则1
* ^(按位异或):相同则0,不同则1
* ~(按位取反):1则0,0则1
*/
int a = 4,b=5;
/*
* 0100 4
* 0101 5 &
* 0100 4
*
* 作用:定向清0 让IP于子网掩码做按位与操作,来确定IP的网段
* 192.168.1.123 IP
* 255.255.255.0 子网掩码
* 192.168.1.1 网关
*
*
* 0100
* 0101 |
* 0101 5
*
* 0000 0100 ~
* 1111 1011 结果-5
*
* 0100
* 0101 ^
* 0001 1
* 作用:交换两个数的值
*/
//第一种交换值:借助于三方变量
int c = 0;
c = a;
a = b;
b = c;
System.out.println("a:"+a+" b:"+b);
//第二种交换值:借助于^
a = a ^ b;
b = a ^ b;
a = a ^ b;
/*
* 0101 a
* 0100 b
* 0001 a 1
*
* 0001 a
* 0100 b
* 0101 b 5 最终的b值
*
* 0001 a
* 0101 b
* 0100 a 4 最终的a值
*/
System.out.println("a:"+a+" b:"+b);
/*
* 移位运算符 >> 有符号右移 << 有符号左移 >>> 无符号右移
* >>1 右移一位:代表除以2
* <<1 左移一位:代表乘以2
*
* 注意:先左移后右移或者先右移再左移之后,不一定得到原来的结果
* 作用:直接操作的位,效率会高
*/
/*
* 原始 00000101
* 移动后 0 0000010 1 最后的1被删除了
* 移动后 000001010 最后的0是补上的
*/
System.out.println(5>>1);
System.out.println(5<<1);
/*
* 按照操作的元素个数分:
* 一元运算符: ++ -- -(正) +(负) ! ~
* 二元运算符:
* 三元运算符: ?:(三目运算符)
*/
/*
* ?:(三目运算符)
*
* 表达式:由多个变量和运算符组合在一起的式子
* 语句:表达式+;,窒息的一个;是空语句
* 构成: 条件 ? 结果一:结果二
* 原理:当作为条件的表达式的结果为true,整个三目元算符的结果就是结果一,否则就是结果二
*/
//举例:求两个数的最大值
int x = 4,y =6;
int z = x>y?x:y;
System.out.println(z);
Java 位运算符
最新推荐文章于 2025-06-25 08:00:00 发布
本文深入解析位运算符和移位运算符的工作原理及其应用,包括按位与、按位或、按位异或、按位取反以及有符号和无符号右移等操作。同时,通过实例演示了如何利用位运算进行IP地址网段确定和数值交换,以及移位运算在数值操作中的高效性。
6392

被折叠的 条评论
为什么被折叠?



