整数Java上的布尔逻辑not运算符

整数Java上的布尔逻辑not运算符,java,boolean,boolean-logic,logical-operators,Java,Boolean,Boolean Logic,Logical Operators,是否有一种方法可以接受16位无符号整数,并对其执行布尔逻辑NOT运算。按位求反运算符是~。例如: int i = 6; System.out.println(~i); // Prints -7 如果您想将该整数视为无符号16位整数(即忽略最高有效16位),您应该这样做 public static int u16neg(int i) { return ~i & 0xFFFF; } 例如: System.out.println(u16neg(0b00000000_0000000

是否有一种方法可以接受16位无符号整数,并对其执行布尔逻辑NOT运算。

按位求反运算符是
~
。例如:

int i = 6;
System.out.println(~i);  // Prints -7
如果您想将该整数视为无符号16位整数(即忽略最高有效16位),您应该这样做

public static int u16neg(int i) {
    return ~i & 0xFFFF;
}
例如:

System.out.println(u16neg(0b00000000_00000000_00000000_00000110)); // 65529
System.out.println(       0b00000000_00000000_11111111_11111001);  // 65529

9是“布尔逻辑不是”6吗?是因为6是9颠倒了吗?我不知道你的意思。布尔运算符用于布尔参数。你是说比特不是接线员?您还可以解释为什么
而不是(6)
应该计算为
9
?@JohnDoe整数是32位的有符号整数。这实际上取决于您用来表示整数的位数。6因为int实际上是00000000..000110.6实际上是
000000000000000000110
,所以翻转位不会得到9.dagnabit。。。要想得到答案总是一场赛跑。