一、原理介绍
Java位运算符是用于处理二进制数据的运算符。在进行二进制位运算时,需要将数字转换为二进制格式,然后进行相应的运算。
Java提供了六种位运算符:
- & 按位与
- | 按位或
- ^ 按位异或
- ~ 按位取反
- > 有符号右移
- >> 无符号右移
- << 左移
位运算符通常用于位掩码、加密算法、图形处理程序和其他需要直接处理二进制数据的应用程序中。
二、按位与运算符(&)
按位与运算符(&)对两个操作数中对应的位执行逻辑and操作。如果两个位都是1,则结果为1,否则为0。
示例代码:
``` int a = 60; // 60的二进制表示为0011 1100 int b = 13; // 13的二进制表示为0000 1101 int c = a & b; // 按位与运算结果为0000 1100 System.out.println(c); //输出12 ```三、按位或运算符(|)
按位或运算符(|)对两个操作数中对应的位执行逻辑or操作。如果两个位中有任意一个为1,则结果为1,否则为0。
示例代码:
``` int a = 60; //60的二进制表示为0011 1100 int b = 13; //13的二进制表示为0000 1101 int c = a | b; //按位或运算结果为0011 1101 System.out.println(c); //输出61 ```四、按位异或运算符(^)
按位异或运算符(^)对两个操作数中对应的位执行逻辑xor操作。如果两个位不同,则结果为1,否则为0。
示例代码:
``` int a = 60; //60的二进制表示为0011 1100 int b = 13; //13的二进制表示为0000 1101 int c = a ^ b; //按位异或运算结果为0011 0001 System.out.println(c); //输出49 ```五、按位取反运算符(~)
按位取反运算符(~)对操作数的每个位执行逻辑not操作,即0变成1,1变成0。
示例代码:
``` int a = 60; //60的二进制表示为0011 1100 int b = ~a; //按位取反运算结果为1100 0011 System.out.println(b); //输出-61,因为取反后第一位为1表示负数 ```六、右移运算符(>>)
右移运算符(>>)将操作数的二进制表示向右移动指定的位数。移动时,左侧的空位用符号位填充(正数为0,负数为1),右侧超出的位被舍弃。
示例代码:
``` int a = 212; // 212的二进制表示为1101 0100 int b = a >> 3; // 右移3位后结果为0001 1010 System.out.println(b); //输出26 ```七、无符号右移运算符(>>>)
无符号右移运算符(>>>)将操作数的二进制表示向右移动指定的位数。移动时,左侧的空位用0填充,右侧超出的位被舍弃。
示例代码:
``` int a = -212; // -212的二进制表示为1111 1111 1111 1111 1111 1111 0011 0100 int b = a >>> 3; // 无符号右移3位后结果为0001 1111 1111 1111 1111 1111 1110 0101 System.out.println(b); //输出536870905 ```八、左移运算符(<<)
左移运算符(<<)将操作数的二进制表示向左移动指定的位数。移动时,右侧的空位用0填充。
示例代码:
``` int a = 212; // 212的二进制表示为1101 0100 int b = a << 3; // 左移3位后结果为1010 0000 0000 System.out.println(b); //输出1704 ```总结
Java位运算符是用于处理二进制数据的运算符,包括按位与、按位或、按位异或、按位取反、有符号右移、无符号右移和左移。位运算符通常用于位掩码、加密算法、图形处理程序和其他需要直接处理二进制数据的应用程序中。