что значит шахматы и доска? - PullRequest
2 голосов
/ 01 апреля 2011
char chess = _board[0];
    for (char i = 1; i < 9; ++i)
    {
        chess &= _board[i];  //?
    }

доска - это 1-й массив символов. что значит шахматы и доска? Спасибо.

Ответы [ 5 ]

6 голосов
/ 01 апреля 2011

Следующее утверждение:

x &= y

... эквивалентно:

x = x & y

... и, как указано выше, амперсанд (&) является «побитовым»а также".Результатом «x & y» является значение, которое имеет 1 во всех битах, где и x, и y имеют соответствующие 1 биты, а везде остальные биты равны 0.

4 голосов
/ 01 апреля 2011

&= является составным побитовым И и оператором присваивания. Что он делает, так это то, что он принимает биты в chess (что равно 8 битам как char) и объединяет их с соответствующими битами _board[i]. Затем он присваивает результаты обратно chess.

По сути, вместе с циклом это приводит к установке каждого бита chess, если для всех значений в _board установлен соответствующий бит.

Далее: поскольку _board равно 8 элементам, умноженным на 8 бит, я предполагаю, что каждый элемент представляет строку, а биты элемента представляют столбцы a-h этой строки. Наличие 1 в битовой позиции представляет что-то (мы не знаем что).

Таким образом, конечным результатом будет то, что chess содержит 1 в каждом из своих 8 битов тогда и только тогда, когда что-то существует во всех строках соответствующего столбца a-h шахматной доски.

1 голос
/ 01 апреля 2011

&= является комбинацией И и присваивания.Следовательно, chess &= _board[i] эквивалентно chess = chess & _board[i]

1 голос
/ 01 апреля 2011

Это переводит в chess = chess & _board[i];, где & - побитовый оператор AND.

0 голосов
/ 01 апреля 2011

Это означает, что нужно взять битовые AND шахмат и _board [i] и установить шахматы равными этому значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...