Сравнение двух символов с помощью оператора &

Я сравниваю следующие два символа с &: '\ u0874' а

и я получаю `в качестве вывода. Я знаю, что "а" в двоичном коде равно 01000001. и '\ u0874' в двоичном формате (кодировка UTF-8) 11100000:10100001:10110100

Как именно здесь работает оператор &?

        char comp58 = 'a';
        char comp96 ='\u0874';
        Console.WriteLine(comp96&=comp58);

Вы используете оператор &=, а не оператор &.

Enigmativity 09.04.2022 13:44

Побитовое И не является сравнением. Что ты пытаешься сделать?

Crowcoder 09.04.2022 13:52

Спасибо за ответ, я просто по другому сформулировал вопрос

Eric Movsessian 09.04.2022 14:14
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
3
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, обратите внимание, что на самом деле вы выполняете операцию and comp96 с comp58 и присваиваете результат comp96 с помощью оператора &=. Из-за этого вы выводите символ, а не целое число.

Во-вторых, обратите внимание, что символы в C# используют UTF16.

В-третьих, обратите внимание, что код UTF16 для a на самом деле 00000000 01100001.

Таким образом, И, которое вы на самом деле выполняете, это:

00000000 01100001 'a'
00001000 01110100 '\u0874'
-----------------
00000000 01100000 Result

И 00000000 01100000 — это код UTF16 для «`» (гравировка/ударение), который вы видите в качестве вывода.

Обратите внимание, что если вы изменили свой код на:

Console.WriteLine(comp96 & comp58);

вывод будет 96, потому что теперь вы будете выводить результат И двух символов, который будет целым числом.

Спасибо, так консоль по умолчанию выводит в utf-16?

Eric Movsessian 09.04.2022 14:14

Нет, но вы можете сделать Console.OutputEncoding = System.Text.Encoding.UTF8;, чтобы включить поддержку кодировки UTF.

Matthew Watson 09.04.2022 18:02

Чтобы уточнить: все символы с кодами менее 128 десятичных знаков одинаковы в UTF8 и ASCII, поэтому все такие символы будут правильно отображаться в консоли независимо от того, установили ли вы выходную кодировку в Unicode.

Matthew Watson 09.04.2022 20:04

Другие вопросы по теме