Есть ли позади упорядочивания кодов ASCII какая-либо логика?

В C# общее используемое взаимное исключение Монитор . Тип' Система. Поточная обработка. Монитор '. Это может также использоваться неявно через' блокировка (Объект) ' оператор. Один пример его использования при построении Singleton-класса.

private static readonly Object instanceLock = new Object();
private static MySingleton instance;
public static MySingleton Instance
{
    lock(instanceLock)
    {
        if(instance == null)
        {
            instance = new MySingleton();
        }
        return instance;
    }
}

оператор блокировки с помощью частного объекта блокирования создает критический раздел. Требуя, чтобы каждый поток ожидал, пока предыдущее не закончено. Первый поток введет раздел и инициализирует экземпляр. Второй поток будет ожидать, входить в раздел и получать инициализированный экземпляр.

Любой вид синхронизации статического участника может использовать оператор блокировки так же.

39
задан this. __curious_geek 16 July 2009 в 19:29
поделиться

7 ответов

Существуют исторические причины, главным образом для упрощения преобразования кодов ASCII:

Цифры (от 0x30 до 0x39) имеют двоичный префикс 110000:

0 is 110000
1 is 110001
2 is 110010

и т. д. Поэтому, если вы удалите префикс (первые две '1'), вы получите цифру в двоичном десятичном формате.

Заглавные буквы имеют двоичный префикс 1000000:

A is 1000001
B is 1000010
C is 1000011

и т. Д. То же самое, если вы удалите префикс (первая «1»), вы получите символы с алфавитным индексом (A = 1, Z = 26 и т. Д.).

Строчные буквы имеют двоичный префикс 1100000:

a is 1100001
b is 1100010
c is 1100011

и т.п. То же, что и выше. Итак, если вы добавите 32 (100000) к заглавной букве, у вас будет строчная версия.

72
ответ дан 27 November 2019 в 02:20
поделиться

Эта диаграмма довольно хорошо показывает это из Википедии: обратите внимание на два столбца элемента управления 2, верхний 2 и нижний, а затем пробелы, заполненные разным. ASCII Chart on Wikipedia

Также имейте в виду, что ASCII был разработан на основе того, что было раньше. Для получения более подробной информации об истории ASCII см. эту превосходную статью Тома Дженнингса , которая также включает в себя значение и использование некоторых незнакомых управляющих символов.

10
ответ дан 27 November 2019 в 02:20
поделиться

Вот очень подробная история и описание кодов ASCII: http://en.wikipedia.org/wiki/ASCII
Вкратце:

  • ASCII основан на Стандарты кодирования телетайпа
  • первые 30 символов являются «непечатаемыми» - используются для форматирования текста
  • , затем они продолжаются печатными символами, примерно в том порядке, в котором они размещаются на клавиатуре. Проверьте свою клавиатуру:
    • пробел,
    • знак верхнего регистра на заглавных буквах:!, ", #, ...,
    • числа
    • знаки, обычно помещаемые в конце строки клавиатуры с цифрами - верхний регистр
    • заглавная буквы, в алфавитном порядке
    • знаки обычно помещаются в конце рядов клавиатуры с буквами - заглавные
    • строчные буквы, алфавитные
    • знаки обычно помещаются в конце рядов клавиатуры с буквами - строчные
6
ответ дан 27 November 2019 в 02:20
поделиться

Если вы посмотрите на двоичные представления для 'a' и 'A', вы увидите, что они отличаются только на 1 бит, что очень полезно (перевод верхнего регистра в нижний или наоборот просто вопрос немного перевернуть). Зачем именно там начинать, понятия не имею.

0
ответ дан 27 November 2019 в 02:20
поделиться
  • «A» - это 0x41 в шестнадцатеричной системе.
  • «a» - это 0x61 в шестнадцатеричной системе.
  • «0» - «9» - это 0x30 - 0x39 в шестнадцатеричной системе.

Итак по крайней мере, легко запомнить числа для A , a и 0-9 . Я понятия не имею о символах. См. Статью в Википедии о порядке ASCII .

0
ответ дан 27 November 2019 в 02:20
поделиться

Википедия :

Сам код был построен таким образом, чтобы большинство управляющих кодов были вместе, и все графические коды были вместе. В первые два столбца (32 позиции) были зарезервировано для управляющих символов. [14] "Космический" персонаж должен был прийти перед графикой произвести сортировку алгоритмы легкие, поэтому это стало позицией 0x20. [15] Комитет решил, что это важно поддерживать верхний регистр 64-символьные алфавиты и выбрали структура ASCII, чтобы его можно было легко сокращен до пригодного 64-символьного набора графических кодов. [16] Нижний регистр поэтому буквы не чередовались с верхним регистром. Чтобы варианты оставались открытыми для строчных букв и других графика, специальные и числовые коды ставились перед буквами, и буква «А» была помещена в позиция 0x41, чтобы соответствовать черновику соответствующие британские стандарт. [17] Цифры 0–9 были размещены так, чтобы они соответствовали значениям в двоичный префикс 011, что делает преобразование с двоичным десятичным кодом просто.

0
ответ дан 27 November 2019 в 02:20
поделиться

Расстояние между A и a равно 32. Это довольно круглое число, не так ли?

Разрыв в 6 символов между заглавными буквами и строчные буквы - это потому, что (32 - 26) = 6. (Примечание: в английском алфавите 26 букв).

5
ответ дан 27 November 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: