【发布时间】:2018-12-19 09:24:29
【问题描述】:
我试图理解下面与演示位运算符相关的一段代码(摘录),特别是 if 语句 ((if ((b & t)...)
变量b 是字节类型和t int。我无法确定如何在循环中测试两种不同的变量类型不等于 0。该程序只是继续翻转位。但是,我无法解决这个问题。它在 Eclipse 中运行良好。有什么想法吗?
class NotDemo {
public static void main(String args []) {
byte b = -34;
for (int t=128; t > 0; t = t/2 ) {
if((b & t) != 0) System.out.print("1 ");
else System.out.print("0 ");
【问题讨论】:
-
Java 隐式转换
byte到int。它将执行byte到short,short到int,int到long,char到int(!),int到float(! 987654338@ 到double以及它们的传递闭包。 -
还有
long到double(!)。 (即使您喜欢隐式转换,标有 (!) 的那些也可能是个坏主意。)