有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的反向位逻辑运算符

我试着换个a的反面,但有些地方出了问题

String binary[]={
        "0000","0001","0010","0011","0100","0101",
        "0110","0111","1000","1001","1010","1100",
        "1101","1110","1111"
    };
    int a=3;
    int b=6;
    int c=a|b;
    int d=a&b;
    int e=a^b;
    int f=(~a &b) | (a&~b);
    int g= ~a & 0x0f;

    System.out.println(" a="+binary[a]);
    System.out.println(" b="+binary[b]);
    System.out.println(" a|b="+binary[c]);
    System.out.println(" a&b="+binary[d]);
    System.out.println(" a^b="+binary[e]);
    System.out.println(" ~a&b|a&~b="+binary[f]);
    System.out.println(" ~a="+binary[g]);**

otput是:

 a=0011
 b=0110
 a|b=0111
 a&b=0010
 a^b=0101
 ~a&b|a&~b=0101
 ~a=1101

最后一个是错误的。a的反面必须是1100。我做错了什么


共 (2) 个答案

  1. # 1 楼答案

    String binary[]={
        "0000","0001","0010","0011",
        "0100","0101","0110","0111",
        "1000","1001","1010","1011",
        "1100","1101","1110","1111"
    };
    

    基本:你错过了一个二进制值。以更明显的模式进行排序会有所帮助

  2. # 2 楼答案

    您的二进制字符串不正确,位移位是,这是正确的二进制字符串数组:

    String binary[]={
                "0000","0001","0010","0011","0100","0101",
                "0110","0111","1000","1001","1010","1011",
                "1100","1101","1110", "1111"
        };
    

    这是你的代码的输出:

    a=0011
    b=0110
    a|b=0111
    a&b=0010
    a^b=0101
    ~a&b|a&~b=0101
    ~a=1100