整个表达式的运算顺序是:先对a取反,再对b和c取与,最后对前两部分取或,楼主可以运行下面的代码,然后手动计算一下结果:public class IntgerTest { public static void main(String[] args) {
int a=-67,b=116,c=78;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(~a));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(c));
int d = ~a | b&c;
System.out.println(d); }}11111111111111111111111110111101
1000010
1110100
1001110
70
int a=-67,b=116,c=78;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(~a));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(c));
int d = ~a | b&c;
System.out.println(d); }}11111111111111111111111110111101
1000010
1110100
1001110
70
然后再进行|和&的操作,最后得到1000110,为70
public static void main(String[] args) {
int a = -67;
int b = 116;
int c = 78;
int d = ~a | b & c;
System.out.println(" a="
+ String.format("%32s", Integer.toBinaryString(a)));
System.out.println("---");
System.out.println("~a="
+ String.format("%32s", Integer.toBinaryString(~a)));
System.out.println(" b="
+ String.format("%32s", Integer.toBinaryString(b)));
System.out.println(" c="
+ String.format("%32s", Integer.toBinaryString(c)));
System.out.println("---");
System.out.println(" d="
+ String.format("%32s", Integer.toBinaryString(d)));
System.out.println("---");
System.out.println(" d=" + d);
}
}
a=11111111111111111111111110111101
---
~a= 1000010
b= 1110100
c= 1001110
---
d= 1000110
---
d=70