我很惊讶在Google上找不到这个简单的发音问题的答案。在检查了十几个不同的页面之后,我只想在这里询问…
根据此页面,3&5导致1。5等于7。我唯一的问题就是:
另外,负数呢?
果然,用Java编写以下代码:
System.out.println(3&5);
System.out.println(3|5);
System.out.println(8&-8);
产生以下输出:
1
7
8
但是同样,如何确定/计算这些结果?
3&5:
0011
0101
----- AND
0001 == 1
3 | 5:
0011
0101
----- OR
0111 == 7
Java中的否定定义为二进制补码(非常常见)。
这样-x = ~x + 1 = ~(x - 1)
。
8&-8:
00001000 //8
11111000 //-8
-------- AND
00001000 // 8
使用否定的最后定义,-1首先借用所有最右边的零(如果有的话),随便设置它们,直到它达到1,然后将其重置,左边的任何内容都保持不变。补码然后恢复最右边的零和最右边的零(所有这些都有效地由-1进行了补全),并对所有最右边的零的左边进行补全:
00001000 // 8
00000111 // 8 - 1 = 7
11111000 // -8
请注意,如果您使用8位数字,则-8仅为11111000。如果您有更多的位,那么左边将有更多的1。如果只有4位,则会遇到某种麻烦,因为-8的表示形式与8相同,因此-8(在4位数学中)是一个自己的负数(如零)。
实际上,8不是一个很好的例子,因为它太简单了。让我们做100 & -100
(一百个,而不是四个):
01100100 // 100
01100011 // 99
10011100 // -100
现在和100:
01100100 // 100
10011100 // -100
-------- AND
00000100 // 4
通常,x & -x
隔离最右边的1。最右边的零而不是最右边的1都不会受到否定的影响,因此,仅对那部分数字而言,这就像您在做的那样x & x
(这当然是x
)。上部,最右边一个的左侧,是互补的,因此您拥有1的任何地方都变为0,而拥有1的任何地方都变为0 0 & 1 = 0
。
问题内容: 如果我有几行,并且想对结果执行按位或运算,如何在Postgres 9.x中执行呢? 例如我的表包含 我知道要执行select语句,以便从列中获取所有(或子集)值的“或”。 例如 希望您能理解我的意思,我无法弄清楚我想要的术语是什么。 问题答案: select bit_or(col1) from table group by col1; 参考(您的版本中可能不存在,因此请查看文档): 集
问题内容: 为什么按位操作打印-1?在二进制中,不为0应该为1。为什么呢? 问题答案: 你实际上很亲密。 在二进制中,不为0应该为1 是的,当我们谈论一点时,这是绝对正确的。 但是,其值为0实际上是全零的32位!将所有32个零转换为32个零。 这是的补码表示形式。 类似地: 也就是说,对于32位无符号二进制补码表示,。 进一步阅读: 补码 这是Java(以及其他系统)用来表示带符号的数字位的系统
本文向大家介绍JavaScript 按位NOT运算符(〜),包括了JavaScript 按位NOT运算符(〜)的使用技巧和注意事项,需要的朋友参考一下 示例 按位NOT(~)对值中的每个位执行NOT操作。 语法: 返回值: 一个Number。 描述 NOT操作的真值表为: 一种 不是 0 1 1 0 按位不加数字会导致:-(x + 1)。 例子: 值(以10为底) 值(以2为底) 返回(以2为底)
问题内容: 我对何时应该使用布尔运算符与按位运算符感到困惑 与 与 有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果? 问题答案: 以下是一些准则: 布尔运算符通常用于布尔值,而按位运算符通常用于整数值。 布尔运算符是短路,但按位运算符不是短路。 短路行为在这样的表达式中很有用: 按位运算&符将无法正常工作,因为总是会评估双方,即。当你使用布尔运算符时,如果第一个为False,则不计算
嗨, 我还尝试使用com.querydsl.core.types.dsl.expressions和com.querydsl.core.types.predicate,如下所示: 但我得到了一个无效的运算符和错误。 怎么会这样呢?
问题内容: 我可以使用单个与号代替类似的按位运算符吗?可能会出现什么样的差异,是否有特定的示例可以清楚地说明此问题? 问题答案: 单身人士将始终检查这两个条件。如果双精度值判断为false,则它将在第一个条件之后停止。如果确实只需要1个2的条件为真或假,则使用2是“短路”状态检查的一种方法。 例如: 如果为,则第一个条件将失败,并且不会费心检查它的值。这是避免空指针的一种方法。 与和两个操作数始终