Как двоичные числа представляются как символы - PullRequest
0 голосов
/ 10 мая 2019

Как вы знаете, когда мы говорим о последовательностях символов, у нас есть некоторая кодировка, такая как ASCII и Unicode и ... Я хочу знать, как операционная система может понимать 65, должен быть представлен как символ 'A'. Другими словами, как ОС может превратить это представление двоичных или шестнадцатеричных чисел в графическое (символьное) представление? Как это произошло в таких ОС, как Windows или Linux? К сожалению, я не нашел никакой информации об этой базовой концепции ОС.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Это зависит от шрифта. Простейшие шрифты - это просто нумерованный список маленьких картинок, например A .

Вот пример растрового шрифта в Linux :

    /* 65 0x41 'A' */
    0x38, /* 00111000 */
    0x6c, /* 01101100 */
    0xc6, /* 11000110 */
    0xfe, /* 11111110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0xc6, /* 11000110 */
    0x00, /* 00000000 */

Число 65 просто отображается на 8 других чисел, выраженных здесь в шестнадцатеричном формате. В комментариях полезно показать их в двоичном виде, и если вы щурились, вы можете разглядеть букву «А», нарисованную цифрами 1.

Когда система хочет показать символ номер 65, она смотрит на эту таблицу, а затем рисует каждый 0 -битный черный и каждый 1 -битный белый (или наоборот для черно-белого текста). Это заставляет "A" появляться.

Что мешает вам изменить картинку, чтобы 65 показывался совершенно другим персонажем? Ничего такого! Люди обычно делали это, например, как шведы изменили букву № 123 с показа { на показ ä, чтобы они могли писать на своем языке.

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

0 голосов
/ 10 мая 2019

Программист должен указать, что значение в местоположении X является символом, целым числом, исполняемой инструкцией и т. Д. Это не происходит автоматически. Код операционной системы должен отслеживать, какой тип данных хранится в каждом месте.

Другими словами, как ОС может превратить это представление двоичных или шестнадцатеричных чисел в графическое (символьное) представление?

Чтобы преобразовать число в строку, вы должны написать или использовать код библиотеки, чтобы сделать это.

 String Convert to Hex (BYTE VALUE)

 string digits [16] = '0', '1', '2', '3', ..., 'A', 'B', 'C', ... 'F' ;

 Result = digits [value >> 4] + digits [value AND FF#16] 

 Return Result 
...