了解整数上单个&符号运算符(&)的行为

我知道单个&符号运算符通常用于“按位与”操作。 然而,任何人都可以帮助解释当你用它来比较两个数字时你得到的有趣结果吗?

例如;

(6 & 2) = 2
(10 & 5) = 0
(20 & 25) = 16
(123 & 20) = 16

这些结果似乎没有逻辑联系 - 我错过了什么? 在线文档似乎只涉及布尔值或单个比特的比较。


比较每一个的二进制表示。

    110 &     010 =     010
   1010 &    0101 =    0000
  10100 &   11001 =   10000
1111011 & 0010100 = 0010000

在每种情况下,只有在输入的左侧和右侧都为1时,结果中的数字才为1。


你需要将你的数字转换为二进制表示,然后你会看到结果之间的链接,如6&2 = 2实际上是110&010 = 010等10&5是1010&0101 = 0000


二进制和操作在整数上执行,用二进制表示。 例如

110  (6)
010  (2)
--------
010  (2)
链接地址: http://www.djcxy.com/p/9885.html

上一篇: Understanding the behavior of a single ampersand operator (&) on integers

下一篇: Logical NOT (!) operator won't work with bitwise statement