如何在C#中进行位右移时去除比特位

6

我有一个整数,需要将它向右移动几次。

x   = 27 = 11011
x>>1= 13 = 1101
x>>2=  6 = 110
x>>3=  3 = 11

我想获取已删除的比特值。我需要得到:1、1、0。
如何获取已删除的值?

你尝试过什么吗? - Soner Gönül
你能在右移之前每次将x和1相与吗? - Demarsch
仅作为兴趣问一下,您在确定这些位之后打算做什么? 如果您要以某种方式再次将它们组合起来,则可能有更有效的方法完成整个操作。 - Matthew Watson
3个回答

7

(x & 1)可以得到最低有效位的值。在移位之前应该先计算它。


6

对于最低有效位,您可以在每次移位之前使用x & 1。如果想要在不改变值的情况下随时获取自定义位,请使用以下方法。

    private static int GetNthBit(int x, int n)
    {
        return (x >> n) & 1;
    }

不错,但为什么不直接使用(x >> n) & 1呢? - Eren Ersönmez
你说得对!那是我脑海中首先浮现的,我已经更新了 (: - Mehmet Ataş

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接