逻辑位运算符(C)

时间:2013-11-13 08:47:57

标签: c

逻辑位运算符用于什么?我听说我可以通过读取最后一位来测试数字是否为奇数。我什么都不知道。我需要一个实际的例子。谢谢你。

3 个答案:

答案 0 :(得分:2)

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

5 ~  00000101
31 ~ 00011111
but 8 ~ 00001000

所以,如果你和它(一点一点地)和1,这是

1 ~ 00000...01

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

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

另一种用法是在一个变量,密码等等中存储多个标志。其​​中有很多标记。

答案 1 :(得分:0)

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

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

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

  1. 我们有逻辑运算符来做布尔逻辑(在布尔值上)。
  2. 我们有按位运算符来执行按位逻辑(在整数值上)。

答案 2 :(得分:0)

二进制运算最常见的应用之一是位域。例如,如果您需要知道具有2个可能值的状态,而不是使用每个状态需要1个字节的字符或bool数组,则可以使用相同的数组,但是您可以使用每个位来保留一个对象的状态,所以使用8倍的内存。此外,例如,您可以使用二进制运算来标记某些错误。在这种情况下,通过它们或使用一些操作符来查找在多个位置(二进制和)发生的错误或者从多个源(二进制或多个)带来错误非常容易。此外,通过使用二进制xor,您可以找到在一个地方发生的错误,但在另一个地方却找不到。 注意:您可以将“错误”替换为许多其他内容。