Java 中的位掩码操作
位掩码是一些数据的二进制表示。在位掩码中,我们认为任何数据都只是一些二进制数字,如 0 和 1。
我们也可以将这些二进制数字用作布尔值,因为 1
代表真
,0
代表假
。
Java 中的位掩码操作
位掩码的另一个定义是以二进制表示形式可视化数字或其他数据。有些位是 set
,有些是 unset
,其中 set
表示 true
或 1
,unset
表示 false
或 0
。
假设我们有一个二进制值 10011
。这里,第 1、第 4 和第 5 位是 sets
,而第 2 和第 3 位是 unsets
。
让我们通过一个例子来理解位掩码。假设我们有一组四个字符 {w,x,y,z}
,我们想要字符串的不同表示。
为了创建 4 位 {_ _ _ _}
的掩码,每个位都为我们提供了我们是否引用该字符的信息。为了更简单,二进制组合 1001
表示 w,z
,0000
表示空字符串,1111
表示 w, x, y, z
。
现在我们已经了解了位和位掩码,是时候了解用于操作位的位运算符了。
Java 中的位运算符
Java 位运算符用于执行位操作。这些运算符可用于任何整数类型,如 short、byte、long、char、int 等。
我们有不同的位运算符。它们中的每一个都用于不同的目的。
这些是:
-
按位与 (
&
) -
按位或 (
|
) -
位补(
~
) -
按位异或 (
^
)
Java 中的位与 (&
) 运算符
AND 运算符是按位运算符,用 &
表示。它对两个或多个值进行逐位计算,如果两个值都为真
,则返回真
;否则,假
。
1(True) & 1(True) = 1(True)
0(False) & 0(False) = 0(False)
1(True) & 0(False) = 0(False)
0(False) & 1(True) = 0(False)
示例代码:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
int a = 3;
int b = 4;
// bitwise AND
// 0011 & 0100=0000 = 0
System.out.println("a & b = " + (a & b));
}
}
输出:
a & b = 0
Java 中的按位或(|
)运算符
OR 运算符也是用|
表示的按位运算符,但它不同于 AND (&
) 运算符。当且仅当单个值为真
时,它才返回真
;否则,假
。
1(True) | 1(True) = 1(True)
0(False) | 0(False) = 0(False)
1(True) | 0(False) = 1(True)
0(False) | 1(True) = 1(True)
示例代码:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
int a = 3;
int b = 4;
// bitwise OR
// 0011 & 0100=0000 = 7
System.out.println("a | b = " + (a | b));
}
}
输出:
a & b = 7
Java 中的按位补码(~
)运算符
按位补码 (~
) 运算符,也称为 NOT
运算符,可以反转位模式。它是一元运算符,因为它与单个值一起使用。
假设我们有一个二进制数 10110
,我们想用按位补码 (~
) 运算符来取反。它变成 01001
。
它将 0 反转为 1,将 1 反转为 0。
~ 1(True) = 0(False)
~ 0(False) = 1(True)
示例代码:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
// Initial values
int a = 3, b;
// bitwise complement of a
// a = 011 where b = ~a, b =100
b = ~a;
System.out.println("~a = "+ b);
}
}
输出:
~a = -4
Java 中的按位异或(^
)运算符
Java 按位异或运算符是用^
表示的二元运算符。
如果输入的二进制值都不同,则返回 true
。但是,如果输入值相同(0 或 1),则结果为假
。
1(True) ^ 1(True) = 0(False)
0(False) ^ 0(False) = 0(False)
1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True) = 1(True)
示例代码:
package articlecodesinjava;
public class ArticleCodesInJava {
public static void main(String[] args) {
// Initial values
int a = 3;
int b = 4;
// bitwise xor
// 0011 ^ 0100 = 0111 = 7
System.out.println("a ^ b = " + (a ^ b));
}
}
输出:
a ^ b = 7
相关文章
Java 中的弱引用类
发布时间:2023/10/10 浏览次数:129 分类:Java
-
本教程演示了 Java 中的弱引用类。弱引用是一种强度不足以使对象保留在内存中的引用。本教程演示了 Java 中弱引用的使用。
用 Java 连接 MySQL 数据库
发布时间:2023/10/10 浏览次数:134 分类:Java
-
这篇文章将演示如何使用 Java 连接 MySQL 数据库。本教程介绍了如何在 Java 中连接 MySQL 数据库。我们还列出了一些示例代码,以便你可以进一步了解该主题。
在 Java 中调用另一个方法中的变量
发布时间:2023/10/10 浏览次数:139 分类:Java
-
本教程解释了如何在 Java 中调用另一个方法中的变量。在本文中,我们将学习如何在 Java 中调用另一个方法中的变量。这取决于变量的类型和它在类内的作用域。
在 Java 中导入自定义类
发布时间:2023/10/10 浏览次数:73 分类:Java
-
这篇文章将要导入 Java 中的自定义类。本文介绍了如何在 Java 中导入自定义类。如果该类存在于同一个包中,则通过创建其对象来使用该类,如果该类存在于另一个包中
从 Java 中的另一个类访问变量
发布时间:2023/10/10 浏览次数:82 分类:Java
-
这篇文章是关于从另一个 Java 类访问变量的。本文介绍如何在 Java 中从另一个类调用变量。我们已经包含了一些示例程序,你可以按照它来执行这个项目。
Java 中的静态类
发布时间:2023/10/10 浏览次数:199 分类:Java
-
本文介绍 Java 静态类。在 Java 语言中,我们不能将外部类创建为静态类,但是有特权可以将嵌套的内部类创建为静态类。静态类的属性如下。
在 Java 中设置 classpath
发布时间:2023/10/10 浏览次数:174 分类:Java
-
这篇文章是关于在 Java 中设置 classpath 的。本文介绍了在 Java 中设置类路径 classpath 的过程,并列出了一些示例代码以理解该主题。
在 Java 中扩展两个类
发布时间:2023/10/10 浏览次数:111 分类:Java
-
这篇文章是关于可用于在 Java 中扩展两个或多个类的方法。本文介绍如何在 Java 中扩展两个或多个类。我们还提供了一些示例代码来帮助你理解该主题。