Java基础的按位运算符,你写过类似的代码吗?

举报
wljslmz 发表于 2022/12/28 13:10:25 2022/12/28
【摘要】 上一篇文章介绍移位运算符,本文介绍按位运算符。 概述按位运算符处理二进制数字或输入值的位,我们可以将这些应用于整数类型:long、int、short、char和 byte。计算过程:首先,操作数被转换为它们的二进制表示接下来,将运算符应用于每个二进制数并计算结果最后,将结果转换回其十进制表示形式Java 提供了以下位运算符:按位运算符用于整数值,&|^与布尔值一起使用时充当条件运算符。运算符...

上一篇文章介绍移位运算符,本文介绍按位运算符。

概述

按位运算符处理二进制数字或输入值的位,我们可以将这些应用于整数类型:long、int、short、char和 byte。

计算过程:

  • 首先,操作数被转换为它们的二进制表示
  • 接下来,将运算符应用于每个二进制数并计算结果
  • 最后,将结果转换回其十进制表示形式

Java 提供了以下位运算符:按位运算符用于整数值,&|^与布尔值一起使用时充当条件运算符。

运算符 符号 解释
& x & y 如果 x 和 y 是整数类型,则执行按位与运算。
| × | y 如果 x 和 y 是整数类型,则执行按位或运算。
^ x^y 如果 x 和 y 是整数类型,则执行按位异或运算。
~ ~x 如果 x 是整数类型,则执行按位非操作(反转每个位)。

&表示按位运算符中的 AND 运算,AND运算(逻辑积)是一种当要运算的两个位都为1时返回1的运算方法。

& 运算符比较两个整数的每个二进制数字,如果都为 1,则返回 1,否则返回 0。

这类似于带有布尔值的 && 运算符,当两个布尔值都为真时,&& 操作的结果为真。

x y 结果
0 0 0
0 1 0
1 0 0
1 1 1

二进制1000(十进制8)与二进制1010(十进制10)AND运算为二进制1000(十进制8)。

代码演示:

package com.test.javaroads.operator;

/**
 * @author: javaroads
 * @date: 2022/12/6 18:12
 * @description:
 */
public class Eleven {

    public static void main(String[] args) {

        int x = 8;
        int y = 10;

        System.out.println("x & y的值为" + (x & y));
    }
}

执行结果:

|

|表示位运算中的或运算,OR运算(逻辑和)是当要运算的位之一为1时返回1的运算方法。

| 运算符比较两个整数的每个二进制数字,如果其中一个为 1,则返回 1。

这类似于 || 与布尔值一起使用的逻辑运算符,当比较两个布尔值时,如果其中一个为真,则结果为真,同样,当其中一个为 1 时,输出为 1。

x y 结果
0 0 0
0 1 1
1 0 1
1 1 1

二进制1000(十进制8)与二进制1010(十进制10)的OR运算为二进制1010(十进制10)。

代码演示:

package com.test.javaroads.operator;

/**
 * @author: javaroads
 * @date: 2022/12/6 18:14
 * @description:
 */
public class Twelve {

    public static void main(String[] args) {

        int x = 8;
        int y = 10;

        System.out.println("x | y的值为" + (x | y));
    }
}

执行结果:

^

^表示位运算中的异或运算,异或运算(异或)是当要运算的位不同时返回1的运算方法。

XOR 运算符比较两个整数的每个二进制数字,如果比较的两个位不同则返回 1。这意味着如果两个整数的位都是 1 或 0,则结果将为 0;否则 否则,结果将为 1。

x y 结果
0 0 0
0 1 1
1 0 1
1 1 0

二进制1000(十进制8)与二进制1010(十进制10)异或运算得到二进制0010(十进制2)。

代码演示:

package com.test.javaroads.operator;

/**
 * @author: wangrui
 * @date: 2022/12/6 18:16
 * @description:
 */
public class Thirteen {

    public static void main(String[] args) {

        int x = 8;
        int y = 10;

        System.out.println("x ^ y的值为" + (x ^ y));
    }
}

执行结果:

~

~表示位操作中的 NOT 操作,NOT运算是一种将运算中的每一位取反的运算方法。

~运算符更改整数的每个二进制位,这意味着所有 0 变为 1,所有 1 变为 0,运算符对布尔值的工作方式类似:它将布尔值从true反转 为false,反之亦然。

二进制 00001000(十进制 8)的 NOT 是 11110111(十进制 -9)。

代码演示:

package com.test.javaroads.operator;

/**
 * @author: javaroads
 * @date: 2022/12/6 18:16
 * @description:
 */
public class Thirteen {

    public static void main(String[] args) {

        int x = 8;

        System.out.println("~x的值为" + (~x));
    }
}

执行结果:

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。