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

本文关键字:删除 整数 位或 组合 | 更新日期: 2023-09-27 18:02:17

使用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;
}

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

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