Shull
@Shull
хочу быть хорошим IT-шником

Как ведут себя логические операторы в сложных ситуациях?

Изучаю сишарп. Есть проблемы :-(

Вот это я понимаю.
Console.WriteLine(false & true);  // false
Console.WriteLine(1 & 1);            // 1


А это я не понимаю!
Console.WriteLine(-2 & -3);         // -4
Console.WriteLine(2 & -2);          // 2
Console.WriteLine(2 & 3);           // 2

Что они тут делают?

И ещё, зачем вот такие странные составные операторы присваивания?
+= , *= - тут проблем нет.
Но |= , &= - что они делают?

Заранее спасибо.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 2
vabka
@vabka Куратор тега C#
Токсичный шарпист
Это не совсем логические операторы.
Это побитовые операторы, и операции они проводят над битами.
Например (в двоичной системе)
100 | 001 = 101
100 & 111 = 100
110 ^ 011 = 101

А про то, почему именно такой результат при работе с отрицательными числами - это тебе дз
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Console.WriteLine(-2 & -3); // -4

Это всё булева логика, представь числа в двоичном представлении, примени операцию для каждого бита и всё станет понятней.
Но |= , &= - что они делают?

Если ты понимаешь, что происходит с +=, то почему возникает вопрос с этими, меняется ведь только операция?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы