为什么按位操作(~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
。
进一步阅读:
~
~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为负数,在运行时是否应该出错? 不符