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