-4

逻辑位运算符有什么用?我听说我可以通过读取最后一位来测试一个数字是否为奇数。我没有任何想法。我需要一个实际的例子。提前致谢。

4

3 回答 3

2

如果数字是奇数,则其最后一位(二进制)为 1。例如:

5 ~  00000101
31 ~ 00011111
but 8 ~ 00001000

所以,如果你用 1 与它(一点一点地),那就是

1 ~ 00000...01

如果数字是奇数,则结果为 1(即最后一位为 1)。

5 ~ 00000101
1 ~ 00000001
-------------
    00000001 => odd

另一种用法是将多个标志存储在一个变量中,密码学等。它们真的很多。

于 2013-11-13T08:50:48.880 回答
0

通常,其 LSB 位为1奇数的数字。因此,您可以使用按位 AND 运算符检查它是否设置了最后一个 LSB 位,如果是,则它是奇数。

if((num & 1) == 1); // Its an odd number

但是,您不能将逻辑运算符与位运算符混合使用。它们的不同之处在于,

  1. 我们有逻辑运算符来执行布尔逻辑(在布尔值上)。
  2. 我们有按位运算符来执行按位逻辑(在整数值上)。
于 2013-11-13T08:51:59.057 回答
0

二元运算最常见的应用之一是位域。例如,如果您需要知道具有 2 个可能值的状态,而不是使用字符或布尔数组,每个状态需要 1 个字节,您可以使用相同的数组,但您可以使用每个位来保留对象的状态,因此使用的内存减少了 8 倍。此外,您可以使用二进制操作来标记一些错误,例如。在这种情况下,很容易传递它们,或者使用一些运算符来查找在多个地方发生的错误(二进制与)或将来自多个来源的错误(二进制或)汇集在一起​​​​。此外,通过使用二进制异或,您可以找到在一个地方发生的错误,而不是在另一个地方发生的错误。注意:您可以用许多其他内容替换“错误”。

于 2013-11-13T09:06:21.907 回答