Gee*_*eek 23 c bit-manipulation bit bitwise-operators
我正在阅读Brian Kernigan和Dennis Ritchie 的C编程语言.以下是关于按位AND运算符的说法:
按位AND运算符
&通常用于屏蔽某些位,例如,Run Code Online (Sandbox Code Playgroud)n = n & 0177将低7位的所有值设置为零
n.
我不太清楚它是如何屏蔽低七位的n.请有人澄清一下吗?
das*_*ght 31
数字0177是表示下面二进制模式的八进制数:
0000000001111111
Run Code Online (Sandbox Code Playgroud)
当你AND使用按位运算时&,结果只保留原始位1在"掩码" 中设置的位; 所有其他位变为零.这是因为"AND"遵循这条规则:
X & 0 -> 0 for any value of X
X & 1 -> X for any value of X
Run Code Online (Sandbox Code Playgroud)
例如,如果你AND 0177和0545454,你得到
0000000001111111 -- 0000177
0101010101010101 -- 0545454
---------------- -------
0000000001010101 -- 0000154
Run Code Online (Sandbox Code Playgroud)
由于0177是八进制文字,每个八进制数是3三位,所以以下二进制等价:
7 = 111
1 = 001
Run Code Online (Sandbox Code Playgroud)
这意味着0177是001111111二进制.