从按位或组合整数中删除值?

时间:2015-07-11 15:51:53

标签: c# bitwise-operators bitwise-or

使用Bitwise Or运算符,您可以将整数(例如2的幂的整数)相互组合,然后检查返回的int是否包含指定的值。但有没有一种正确的方法从返回的整数中删除值而不组合新的?

目前我从合并的整数中减去我想要删除的值,但是这样可以正常工作还是会导致问题?或者还有更多"适当的"这样做的方式?

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    int combinedints = CombineIntegers(CombineIntegers(2, 8), 32); //Combine three integers.
    MessageBox.Show(combinedints.ToString()); //Shows 42.
    MessageBox.Show(RemoveInteger(combinedints, 8).ToString()); //Removes 8 - shows 34.
}

private int CombineIntegers(int a, int b)
{
    return a | b;
}

private int RemoveInteger(int a, int b)
{
    return a -= b;
}

private bool CheckInteger(int a, int b)
{
    return (a & b) == b;
}

1 个答案:

答案 0 :(得分:3)

private int RemoveInteger(int a, int b)
{
    return a & ~b;
}