Может кто-то объяснять следующую часть кода
int x = 45;
int y = x &= 34;
Это присваивается 32 к y
Он выполняет побитовое «и» как составной оператор присваивания. Это эквивалентно:
int x = 45;
x = x & 34;
int y = x;
Теперь 45 = 32 + 8 + 4 + 1 и 34 = 32 + 2, поэтому результат побитового «и» равен 32.
Лично я считаю, что использование составного оператора присваивания в объявление переменной довольно нечитаемо - но, по-видимому, это не был "настоящий" код для начала ...
int x = 45;
int y = x &= 34;
Gives: y = 32
int x = 45; // 45 = 101101
// 34 = 100010
x = x & 34; // 101101
// 100010 &
// --------
// 100000 ( = 32 )
int y = x; // y = 32
Это эквивалент:
int x = 45;
x = x & 34;
int y = x;
Оператор & для целочисленных типов вычисляет логическое побитовое И для своих операндов.
Это побитовая операция, дополнительную информацию можно получить найдено здесь:
http://msdn.microsoft.com/en-us/library/sbf85k1c%28VS.80%29.aspx
Выглядит как побитовое И, которое присваивается x с помощью сокращенной записи & =
, а также присваивается y
.
Здесь x & = 34
используется и как присваивание, и как выражение. Он вычисляет значение x & 34
, присваивает его x
, и значение выражения соответствует назначенному.
Результат поразрядной операции и 45 & 34
равен 32
, который присваивается x, а затем также y.
45 = 101101(binary)
34 = 100010(binary)
45 & 34 = 100000(binary) = 32