关于&和|手术

时间:2012-09-14 07:04:08

标签: c++ c

  

可能重复:
  Real world use cases of bitwise operators

我不太确定按位运算符&|,有人可以向我解释这些运算符究竟是做什么的吗? 我昨天在http://www.cprogramming.com/tutorial/bitwise_operators.html阅读了教程,但是我真的不知道我是否想在编码中应用它,有人可以举一些例子。

2 个答案:

答案 0 :(得分:0)

|运算符(OR):

------------------------
 a  0000 1110 1110 0101
------------------------
 b  1001 0011 0100 1001
------------------------
a|b 1001 1111 1110 1101

如果其中一个数字中的地点有1,则运营商会提供1

&运算符(AND):

------------------------
 a  0000 1110 1110 0101
------------------------
 b  1001 0011 0100 1001
------------------------
a&b 0000 0010 0100 0001

如果在其中一个数字中,运营商会给出0

用法:如果我只想要一部分数字(比方说第二组)我可以写:

a & 0x00f0

对于初学者,推荐使用位运算符而不是

答案 1 :(得分:0)

这是一个非常低级的编程问题。最小的内存位是“位”。一个字节是一个8位的块,一个字是一个16位的块,依此类推......按位运算符允许你改变/检查这些块的位。根据您编写的代码,您可能永远不需要这些操作符。

示例:

unsigned char x = 10; /*This declares a byte and sets it to 10. The binary representation
                        of this value is 00001010. The ones and zeros are the bits.*/

if (x & 2) {
  //Number 2 is binary 00000010, so the statements within this condition will be executed 
  //if the bit #1 is set (bits are numbered from right to left starting from #0) 
}

unsigned char y = x | 1; //This makes `y` equal to x and sets the bit #0. 
                         //I.e. y = 00001010 | 00000001 = 00001011 = 11 decimal