这里的&symbol是什么意思?这里发生了什么?

ylamdve6  于 2021-07-06  发布在  Java
关注(0)|答案(4)|浏览(395)

我浏览了一个java文件,看到了这段代码,但不能真正理解这里发生了什么。符号在这里是什么意思,当我运行这个时,我分别得到值2和8。

package com.company;

public class Question_2 {

    public static void main(String[] args) {
        int mask = 0x000F;
        int value = 0x2222;
        int f = 90;
        int h = 9;
        System.out.println(value & mask);
        System.out.println(f & h);
    }
}

这是我得到的结果:

2
8
nhaq1z21

nhaq1z211#

&是位与运算。

System.out.println(value & mask);

输出按位ans的十六进制表示。

System.out.println(f & h);

输出按位与的十进制表示形式。
&足够聪明,可以返回与其参数相同的表示结果。

yr9zkbsy

yr9zkbsy2#

&指按位与运算。
用于启用特定位和禁用其他位的掩码变量。
在这个代码中,
system.out.println(值和掩码);
掩码保留第一个(从右到左)4位,并取消设置其他位,因此掩码变量和任何值之间的按位and值总是小于15,因为0x000f->0000 0000 1111
数学上:由于掩码是0x000f,如果掩码和任何值之间的&的值为零,则该数字可除以16,否则不可除以16

mefy6pfw

mefy6pfw3#

&是一个明智的操作
&如果同一位置的两位都为1,则为1,否则为0
此外,要执行此操作,操作数将转换为基数2

90 = 0101 1010 in base 2
09 = 0000 1001 in base 2
     _________
     0000 1000 which is 8 convert to decimal

  000f in hexadecimal =  0000 0000 0000 1111
  2222 in hexadecimal =  0010 0010 0010 0010
  using & on this is     0000 0000 0000 0010 which is 2 convert to decimal

这就是basic&operator的工作原理。

dzhpxtsq

dzhpxtsq4#

&用作关系运算符来检查条件语句,就像&&operator一样。但是在处理条件语句的方式上有一个小小的变化会先检查第一个数据,如果它是真的,那么它会检查下一个和子。。但在单字符情况下,即使前一个条件是失败的,它也只评估所有条件。因此,由条件引起的数据值的任何变化将仅反映在这种情况下。
&也可用作位运算符
打印(f&h)->

01011010

&00001001 00001000->十进制8

相关问题