2015-05-07 3 views
1
strcat(b, ((x & z) == z) ? "1" : "0"); 

Я понимаю strcat() Функция и условный (тройной) оператор. Но я не знаю, что означает (x & z) == z.Что означает сингл & в следующем выражении?

+0

https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Bitwise_operators –

+1

'(х & г) == z' может быть прочитана как«х содержит г» – harold

ответ

4

& - побитовый оператор И.

здесь, (x & z) == z средства, выполнить побитовое И x и z и если это значение равно z, то ....

Ref: Глава 6.5.10, C11 стандарт, "побитовое И оператор"

Результат двоичного оператора & является побитовым И из операндов (то есть каждый бит в результате устанавливается тогда и только тогда, когда каждый из соответствующих битов в преобразованных операндах задан).

2

средства:

Concatenate "1" в строку b если побитовое И x и z является такой же, как z, еще CONCATENATE "0" в строку b.

x&z означает побитное обращение x и z.

Результат затем сравнивается с z.

Если результат такой же, как z, тогда условие будет TRUE иначе FALSE.

+2

вы имели в виду«0»вместо из "2"? – apomene

+0

@apomene исправлено. – Vagish

1

(x & z) == z означает в 'x', ВСЕ биты, которые являются SET в 'z', являются SET.

«x» должен содержать все установленные биты ИЛИ дополнительно могут быть установлены еще несколько бит. Тогда это условие становится истинным.

Смежные вопросы