当前位置: 首页 > 面试题库 >

按位非运算符

邹祺
2023-03-14
问题内容

为什么按位操作(~0);打印-1?在二进制中,不为0应该为1。为什么呢?


问题答案:

你实际上很亲密。

在二进制中,不为0应该为1

是的,当我们谈论一点时,这是绝对正确的。

但是,int其值为0实际上是全零的32位!~将所有32个零转换为32个零。

System.out.println(Integer.toBinaryString(~0));
// prints "11111111111111111111111111111111"

这是的补码表示形式-1

类似地:

System.out.println(Integer.toBinaryString(~1));
// prints "11111111111111111111111111111110"

也就是说,对于32位无符号int二进制补码表示,~1 == -2

进一步阅读:

  • 补码
    • 这是Java(以及其他系统)用来表示带符号的数字位的系统
  • JLS 15.15.5按位补码运算符 ~
    • “请注意,在所有情况下,均~x等于(-x)-1


 类似资料:
  • 问题内容: 为了测试使用更基本的构建块(在我的情况下使用Nand,Or和And)构建Xor操作,我需要能够执行Not操作。内置似乎只用一位完成此操作。如果我做: 我应该得到,但是我只是得到。我究竟做错了什么?还是Python只是缺少此基本功能? 我知道Python具有内置的Xor函数,但我一直在使用Python来测试需要构建Xor门的HDL项目/课程的内容。我想在Python中进行测试,但是我不能

  • 本文向大家介绍JavaScript 按位NOT运算符(〜),包括了JavaScript 按位NOT运算符(〜)的使用技巧和注意事项,需要的朋友参考一下 示例 按位NOT(~)对值中的每个位执行NOT操作。 语法: 返回值: 一个Number。 描述 NOT操作的真值表为: 一种 不是 0 1 1 0 按位不加数字会导致:-(x + 1)。 例子: 值(以10为底) 值(以2为底) 返回(以2为底)

  • 问题内容: 我对何时应该使用布尔运算符与按位运算符感到困惑 与 与 有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果? 问题答案: 以下是一些准则: 布尔运算符通常用于布尔值,而按位运算符通常用于整数值。 布尔运算符是短路,但按位运算符不是短路。 短路行为在这样的表达式中很有用: 按位运算&符将无法正常工作,因为总是会评估双方,即。当你使用布尔运算符时,如果第一个为False,则不计算

  • 问题内容: 我正在研究《 Beginning Android Games》 这本书。我注意到的一件事是: 这是我第一次看到这样的变量,所以我不知道它的作用。我在Java中运行代码并创建了一些示例。 如果我运行此代码: 答案将是0?这是为什么? 如果我运行此代码: 起初,我认为这是价值的串联,因此我假设i = 10500,但事实并非如此。答案是一样的。还是0?有人知道这里发生了什么吗? 问题答案:

  • 考虑以下代码: 我可以理解Python(和其他语言)中的算术运算符,但我从来没有很好地理解过“按位”运算符。在上面的示例中(来自Python书籍),我理解左移位,但不理解其他两个。 此外,位运算符实际用于什么?我想举一些例子。

  • 问题内容: 当遇到按位移位运算符时,我遇到了一个有趣的场景。如果第二个操作数为负,按位移位运算如何工作?。 即,<< << b,“ <<”将a中的位模式向左移动b位。但是,如果b为负数,在运行时是否应该出错? 我能够成功运行以下代码,但我不知道它是如何工作的? 输入项 结果 “ a”的ASCII码为97。有人可以帮助我了解其工作原理吗? 问题答案: 但是,如果b为负数,在运行时是否应该出错? 不符