迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的位掩码操作

作者:迹忆客 最近更新:2023/10/10 浏览次数:

位掩码是一些数据的二进制表示。在位掩码中,我们认为任何数据都只是一些二进制数字,如 0 和 1。

我们也可以将这些二进制数字用作布尔值,因为 1 代表0 代表


Java 中的位掩码操作

位掩码的另一个定义是以二进制表示形式可视化数字或其他数据。有些位是 set,有些是 unset,其中 set 表示 true1unset 表示 false0

假设我们有一个二进制值 10011。这里,第 1、第 4 和第 5 位是 sets,而第 2 和第 3 位是 unsets

让我们通过一个例子来理解位掩码。假设我们有一组四个字符 {w,x,y,z},我们想要字符串的不同表示。

为了创建 4 位 {_ _ _ _} 的掩码,每个位都为我们提供了我们是否引用该字符的信息。为了更简单,二进制组合 1001 表示 w,z0000 表示空字符串,1111 表示 w, x, y, z

现在我们已经了解了位和位掩码,是时候了解用于操作位的位运算符了。


Java 中的位运算符

Java 位运算符用于执行位操作。这些运算符可用于任何整数类型,如 short、byte、long、char、int 等。

我们有不同的位运算符。它们中的每一个都用于不同的目的。

这些是:

  1. 按位与 (&)
  2. 按位或 (|)
  3. 位补(~
  4. 按位异或 (^)

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便