Java 布尔数的二进制一补运算符(或二进制求反)?
我会问一个很简单的问题,这让我很惊讶。 我想将一个简单的C代码移植到java,在这段代码中,它使用了Java 布尔数的二进制一补运算符(或二进制求反)?,java,c,boolean,Java,C,Boolean,我会问一个很简单的问题,这让我很惊讶。 我想将一个简单的C代码移植到java,在这段代码中,它使用了int作为boolean。在代码内部,它将其反转了几次,如: c = !c; 因此,一开始我自然认为布尔值可以很好地工作。不过,反转不起作用(使用二进制1补码运算符~) 我也尝试过字节(毕竟我只需要一个布尔值),但奇怪的是,这段代码没有编译,表明错误类型不匹配: byte c = 0; c = ~c; //<= here is the error 字节c=0; c=~c// 在Java中
int
作为boolean
。在代码内部,它将其反转了几次,如:
c = !c;
因此,一开始我自然认为布尔值可以很好地工作。不过,反转不起作用(使用二进制1补码运算符~)
我也尝试过字节
(毕竟我只需要一个布尔值
),但奇怪的是,这段代码没有编译,表明错误类型不匹配
:
byte c = 0;
c = ~c; //<= here is the error
字节c=0;
c=~c// 在Java中使用boolean
,并用对其求反代码> Java拥有代码>逻辑not运算符太多。c是一个完全不同的东西,如果你使用c,你就是在使用c,否则就使用java定义的东西虽然讨论的是xor,但它通常适用于按位运算符:long
不需要额外的强制转换,原因是~
应用于long
会产生long
,当~
应用于字节时
会生成int
@Brett-Okken,这也是一个有用的链接。