【发布时间】:2014-02-21 15:10:22
【问题描述】:
我明白:
int bit = (number >> 3) & 1;
将给我从左边 3 位的位,所以假设 8 是 1000,那么就是 0001。
我不明白“& 1”如何删除除最后一位之外的所有内容以显示简单的“1”输出。我知道这是可行的,我知道如何从 int 中获取一些信息,但是代码是如何提取单个位的?
代码...
int number = 8;
int bit = (number >> 3) & 1;
Console.WriteLine(bit);
【问题讨论】:
-
@Kapol 是的,这是正确的答案,假设 OP 的意思是“右”而不是“左”。 (否则,问题中的示例也不正确。)二进制中的 16 是 10000,从右数第 3 位,从 0 开始,为 0。
-
@Kapol 好吧,你没看错,只是它占用了
number>>3的最低有效位。 :) -
您也可以只使用
bit = number & 8并获得相同的结果。 -
@Georg 数字部分可能在实时代码中是可变的。
-
对不起,我删除了我的 cmets,因为我认为“& 1”部分应该每次都返回位值(例如 16 >> 3 应该是 1)。由于这只需要在特定情况下工作,所以我对一切都很好。
标签: c# bit-manipulation bitwise-operators