Почему логическое «И» & в C# возвращает 1?

В языке программирования C#, оператор логического «И» представлен символом «&». Этот оператор применяется для выполнения логической операции И между двумя булевыми значениями. Результатом операции будет значение «истина» только если оба операнда равны true, иначе результат будет false.

Однако, в отличие от оператора «&&», который является ленивым оператором и останавливает вычисления, если первый операнд равен false, оператор «&» вычисляет оба операнда независимо от их значения.

Когда используется оператор «&» между двумя числами, он выполняет операцию побитового И над их двоичными представлениями. Это означает, что каждый бит в результирующем числе будет установлен в 1 только в том случае, если соответствующие биты в исходных числах также равны 1, иначе бит будет установлен в 0.

Таким образом, если мы используем оператор «&» с двумя числами, каждое из которых равно 1, результатом будет 1, потому что в двоичной системе 1 & 1 = 1.

Например, рассмотрим следующий код:

int a = 5; // 0101 в двоичной системе
int b = 3; // 0011 в двоичной системе

int c = a & b;

Console.WriteLine(c); // Выводит 1

В данном примере, если мы выполним операцию побитового И между числами 5 и 3, мы получим результат 1, потому что только последний бит в обоих числах равен 1.

В заключение, оператор «&» возвращает 1, когда используется с двумя числами, каждое из которых равно 1, потому что он выполняет побитовое И между ними.