C# 如何在c中从按位右移中删除位#
我有一个整数,我必须将它向右移动几次C# 如何在c中从按位右移中删除位#,c#,bit-manipulation,shift,C#,Bit Manipulation,Shift,我有一个整数,我必须将它向右移动几次 x = 27 = 11011 x>>1= 13 = 1101 x>>2= 6 = 110 x>>3= 3 = 11 我想获取已删除的值位值。我必须得到:1,1,0 如何获取删除的值(x&1)为您提供最低有效位的值。你应该在换班前计算一下 删除前只需测试第一个位 int b = x & 1; 对于最低有效位,您可以在每次移位之前使用x&1。如果您想在任何时候获得自定义位而不更改其值,可以使用下面的方法
x = 27 = 11011
x>>1= 13 = 1101
x>>2= 6 = 110
x>>3= 3 = 11
我想获取已删除的值位值。我必须得到:1,1,0
如何获取删除的值
(x&1)
为您提供最低有效位的值。你应该在换班前计算一下 删除前只需测试第一个位
int b = x & 1;
对于最低有效位,您可以在每次移位之前使用
x&1
。如果您想在任何时候获得自定义位而不更改其值,可以使用下面的方法
private static int GetNthBit(int x, int n)
{
return (x >> n) & 1;
}
你试过什么了吗?你能在每次正确转换之前都做x&1吗?有趣的是,在你确定了这些位之后,你在用它们做什么?如果您以某种方式再次组合它们,可能会有一种更有效的方法来完成整个操作。不错,但为什么不只是
(x>>n)&1
?您是对的!这是我第一次想到的,我更新了(: