Проверка битового шаблона - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть симпатичная ладья ie вопрос для вас, ребята.

Я хочу написать небольшой чек. Там я хочу написать булеву проверку, идентичен ли двухбитный шаблон.

К сожалению, я не совсем понял проверку битов.

    public bool BitPatternCheck(int number, int operand)
    {
        if (operand >> number != 0)
        {
            false;
        }

    }

Теперь в методе Main я хотел бы передать 2 числа и проверить, все ли биты в операнде также присутствуют в числе.

1 Ответ

0 голосов
/ 10 апреля 2020

Вам необходимо использовать побитовое и:

(number & operand) == operand

Это называется маскированием. Это будет поразрядно и каждый бит в number с соответствующим битом в operand. Если они оба 1, то полученное число будет иметь бит, установленный в этой позиции. Например:

number:  001110111
operand: 001100011
result:  001100011
...