Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 位操作(清除n位)_C++_C_Bit Manipulation - Fatal编程技术网

C++ 位操作(清除n位)

C++ 位操作(清除n位),c++,c,bit-manipulation,C++,C,Bit Manipulation,翻阅Gayle Laakmann McDowell的《破解编码访谈》一书,在比特操作一章中,它提出了一个问题: 查找的值(假设数字由4位表示): 1011&(~0~0不是1,而是1111(或0xf)。~运算符是按位非运算符,而不是逻辑运算符(即!) 因此,当向左移动两位时,最后四位是1100。1100&1011实际上是1000,~0不等于1。0将默认为整数,not操作将反转所有位,而不仅仅是第一位。是按位的Compl>接线员 ~0的值应为4位的1111 1011 & (~0 <&l

翻阅Gayle Laakmann McDowell的《破解编码访谈》一书,在比特操作一章中,它提出了一个问题:

查找的值(假设数字由4位表示):


1011&(~0
~0
不是1,而是
1111
(或
0xf
)。
~
运算符是按位非运算符,而不是逻辑运算符(即


因此,当向左移动两位时,最后四位是
1100
1100&1011
实际上是
1000
~0
不等于1。
0
将默认为整数,not操作将反转所有位,而不仅仅是第一位。

是按位的Compl>接线员

~0
的值应为4位的
1111

1011 & (~0 << 2)
= 1011 & ( 1111 << 2)
= 1011 &  1100
= 1000

1011&(~0
1011&(~0“假设数字由4位表示”-->
~0
=
0xF
@icepack删除7
f
已完成。经验教训:位!=八位字节。因此,如果问题被设为1011&(~0000@user85030是的。就像
07:56
7:56
表示同一时间。谢谢。我接受了你的答案。结合Matt的回答,“0将默认为整数,NOT操作将反转所有位,而不仅仅是第一位。”完全回答了我的问题。
1011 & (~0 << 2)
= 1011 & ( 1111 << 2)
= 1011 &  1100
= 1000
1011 & (~0 << 2)