本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.概念
位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。作用在所有的位上,并且按位运算。
2.类型
& 与,如果相对应位都是1,则结果为1,否则为0
| 或,如果相对应位都是 0,则结果为 0,否则为 1
^ 异或,如果相对应位值相同,则结果为0,否则为1
〜 取反,按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
3.注意事项
位运算是直接对二进制进行运算
在位运算中,操作数必须是整型
位异或运算符的特点:
(1)一个数据对另一个数据位异或两次,该数本身不变。
(2)任何数和自身异或,结果为0
(3)任何数和0异或,结果为本身
(4)<< 左移一位,相当于乘以2: 3 << 2 = 12 –> 322=12
(5)>> 右移一位,相当于除以2: 3 >> 1 = 1 –> 3/2=1
(6)3 >>> 1 = 1 –> 3/2=1
同样的运算,位运算的效率高于算术运算
4.实例
classBitDemo{
publicstaticvoidmain(String[]args){
inta=12;
//8对应二进制是:00000000000000000000000000001000
intb=8;
//左移运算,所有的位数向左侧移动指定的位数,左侧高位直接抛弃,右侧低位补0
//右移运算,所有的位数向右侧移动指定的位数,左侧高位补零,右侧直接抛弃
//00000000000000000000000000100000---32
//00000000000000000000000000000010---2
System.out.println(b<<2);
System.out.println(b>>2);
System.out.println(6&3);
System.out.println(6|3);
System.out.println(6^3);
//00000000000000000000000000000110&
//00000000000000000000000000000011=
//00000000000000000000000000000010-->2
//00000000000000000000000000000110|
//00000000000000000000000000000011=
//00000000000000000000000000000111-->7
//00000000000000000000000000000110^
//00000000000000000000000000000011=
//00000000000000000000000000000101-->5
//下面的算法可以实现a和b的数据转化效果
//对两个操作数连续执行三次异或操作,会改变值的顺序
//a=a^b;
//b=a^b;
//a=a^b;
//System.out.println(a);
//System.out.println(b);
//最简单的一种形式
//inttemp=a;
//a=b;
//b=temp;
//一句话搞定
a=a+b-(b=a);
System.out.println(a);
System.out.println(b);
}
}
原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
















































暂无评论内容