Java中的位运算符
运算符构成任何编程语言的基本构建块。 Java也提供了许多类型的运算符,可以根据执行各种计算和功能的需要使用,如逻辑、算术、关系等。它们根据它们提供的功能进行分类。这里有几种类型:
- 算术运算符
- 一元运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
- 位运算符
- 移位运算符
本文解释了有关按位运算符的所有知识。
位运算符
位运算符用于执行数字的各个位的操作。它们可以与任何整数类型(char、short、int 等)一起使用。它们在执行二叉索引树的更新和查询操作时使用。
现在让我们看一下Java中的每个位运算运算符:
1. 按位或 (|)
该运算符是二元运算符,用“|”表示。它返回输入值的逐位或,即,如果任一位为 1,则返回 1,否则显示 0。
例子:
a = 5 = 0101 (In Binary)
b = 7 = 0111 (In Binary)
Bitwise OR Operation of 5 and 7
0101
| 0111
________
0111 = 7 (In decimal)
2. 按位与 (&)
该运算符是二元运算符,用“&”表示。它返回输入值的逐位与,即如果两个位都为 1,则返回 1,否则显示 0。
例子:
a = 5 = 0101 (In Binary)
b = 7 = 0111 (In Binary)
Bitwise AND Operation of 5 and 7
0101
& 0111
________
0101 = 5 (In decimal)
3. 按位异或 (^)
此运算符是二元运算符,用“^”表示。它返回输入值的逐位异或,即如果对应的位不同,则为1,否则为0。
例子:
a = 5 = 0101 (In Binary)
b = 7 = 0111 (In Binary)
Bitwise XOR Operation of 5 and 7
0101
^ 0111
________
0010 = 2 (In decimal)
4.按位补码(~)
此运算符是一元运算运算符,用“~”表示。它返回输入值的反码表示,即所有位反转,这意味着它使每 0 变为 1,每 1 变为 0。
例子:
a = 5 = 0101 (In Binary)
Bitwise Complement Operation of 5
~ 0101
________
1010 = 10 (In decimal)
Note: Compiler will give 2’s complement of that number, i.e., 2’s complement of 10 will be -6.
Java
// Java program to illustrate
// bitwise operators
public class operators {
public static void main(String[] args)
{
// Initial values
int a = 5;
int b = 7;
// bitwise and
// 0101 & 0111=0101 = 5
System.out.println("a&b = " + (a & b));
// bitwise or
// 0101 | 0111=0111 = 7
System.out.println("a|b = " + (a | b));
// bitwise xor
// 0101 ^ 0111=0010 = 2
System.out.println("a^b = " + (a ^ b));
// bitwise not
// ~0101=1010
// will give 2's complement of 1010 = -6
System.out.println("~a = " + ~a);
// can also be combined with
// assignment operator to provide shorthand
// assignment
// a=a&b
a &= b;
System.out.println("a= " + a);
}
}
a&b = 5
a|b = 7
a^b = 2
~a = -6
a= 5
移位运算符(移位运算符)
移位运算符用于向左或向右移动数字的位,从而分别将数字乘以或除以 2。当我们必须将一个数字乘以或除以 2 时,可以使用它们。
句法:
number shift_op number_of_places_to_shift;
移位运算符的类型:
移位运算符进一步分为 4 种类型。这些都是:
- 有符号右移运算符(>>)
- 无符号右移运算符(>>>)
- 左移运算符
- 无符号左移运算符(<<<)
Note: For more detail about the Shift Operators in Java, refer Shift Operator in Java.