使用布尔变量

时间:2017-09-24 17:46:01

标签: java

我是编程新手。我正在尝试打印真相表。它包含AND,OR,XOR,NOT。我完成了前3个部分。但是当我试图编写“NOT”部分时,我从编译器得到错误“int unary operator(!)”的错误操作数。

class oneandzero{
    public static void main (String [] args){
        boolean p,q;
        int a,b;
        System.out.println("P\tQ\tAND\tOR\tXOR\tNOT P\tNOT Q");
        p=false; q=false;
        a=(p)?1:0;
        b=(q)?1:0;
        System.out.println(a+"\t"+b+"\t"+(a&b)+"\t"+(a|b)+"\t"+(a^b)+"\t"+(!a)+"\t"+(!b));
        p=false; q=true;
        a=(p)?1:0;
        b=(q)?1:0;
        System.out.println(a+"\t"+b+"\t"+(a&b)+"\t"+(a|b)+"\t"+(a^b)+"\t"+(!a)+"\t"+(!b));
        p=true; q=false;
        a=(p)?1:0;
        b=(q)?1:0;
        System.out.println(a+"\t"+b+"\t"+(a&b)+"\t"+(a|b)+"\t"+(a^b)+"\t"+(!a)+"\t"+(!b));
        p=true; q=true;
        a=(p)?1:0;
        b=(q)?1:0;
        System.out.println(a+"\t"+b+"\t"+(a&b)+"\t"+(a|b)+"\t"+(a^b)+"\t"+(!a)+"\t"+(!b));
    }
}

1 个答案:

答案 0 :(得分:2)

逻辑NOT运算符!仅对布尔值起作用:

!true == false
!false == true

您可能需要按位NOT运算符~,它对整数起作用:

~0b00000000 == 0b11111111
~0b11111111 == 0b00000000

// or for single bits, (~x & 1):
~0 & 1 == 1
~1 & 1 == 0