【问题标题】:Boolean Logical not operator on Integer Java整数 Java 上的布尔逻辑非运算符
【发布时间】:2015-02-06 16:52:30
【问题描述】:

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

【问题讨论】:

  • 9 是“布尔逻辑非”6?是因为 6 是 9 颠倒的吗?
  • 我不确定你的意思。布尔运算符用于布尔参数。您的意思是 bit not 运算符吗?你也能解释一下为什么not(6)应该被评估为9吗?
  • @JohnDoe 整数为 32 位且有符号。
  • 嗯,这实际上取决于您使用多少位来表示整数。 6 作为 int 实际上是 00000000..000110.
  • 6 实际上是00000000000000000000000000000110,所以翻转位不会给出 9。

标签: java boolean boolean-logic logical-operators


【解决方案1】:

按位否定运算符是~。示例:

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

【讨论】:

  • Dagnabbit... 找出答案总是一场竞赛。
猜你喜欢
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多