【发布时间】:2016-07-19 16:55:26
【问题描述】:
我试图了解二进制加法和逻辑 OR 表的不同之处。 是否都结转1,或者如果不是,哪个结转操作,哪个不结转?
【问题讨论】:
标签: xor
我试图了解二进制加法和逻辑 OR 表的不同之处。 是否都结转1,或者如果不是,哪个结转操作,哪个不结转?
【问题讨论】:
标签: xor
我将尝试通过一些插图来澄清几点。
首先,加法。基本上就像在小学加数字一样。但是如果你有一个 1 位与 1 位对齐,你会得到一个 0 和一个 1 进位(即10,本质上类似于5 加上基数为 10 的 5)。否则,将它们添加为“常规”(以 10 为底)数字。例如:
₁₁₁
1001
+ 1111
______
11000
请注意,在最左侧的列中添加两个1 得到10,另一个1 得到11(类似于5 + 5 + 5)。
现在,假设“逻辑或”是指按位或(一种基本上对每对相应位执行逻辑或(包含)操作的操作),那么你有这个:
1001
| 1111
______
1111
这里你应该有一个0位的唯一情况是两个位都是0。
最后,既然你标记了这个问题xor,我假设它也是按位的。
1001
^ 1111
______
0110 = 110₂
在这种情况下,两个1-bits 给出一个0,当然两个0-bits 给出0。
【讨论】:
使用逻辑 OR,您会得到逻辑结果(布尔值)。 IOW true OR true 为 true(除 false OR false 之外的任何内容均为 true)。在某些语言(如 C)中,除 0 之外的任何数值都表示真。有些语言使用明确的数据类型来表示 true、false(bool、Boolean)。 在二进制 OR 的情况下,您正在 ORing 两个二进制值的位。即:1(即二进制1)按位OR 2(即二进制10)是二进制11:
01
11
为 3。因此,当值没有共享位(如标志值)时,二进制 OR 也是一种加法。
【讨论】:
异或(XOR)操作类似于二进制加法,除了 从一个位位置到下一个位位置没有进位。因此,每一位 位置可以独立于其他位置进行评估。
【讨论】: