Как компьютеры различают буквы и цифры в двоичном формате?

Мне было просто любопытно, потому что 65 такой же, как буква А

Если это не тот стек, извините.

2 ответа

Решение

Короткий ответ. Они не Более длинный ответ, каждая двоичная комбинация между 00000000 и 11111111 имеет символьное представление в наборе символов ASCII. 01000001 просто первая заглавная буква латинского алфавита, которая была обозначена более 30 лет назад. Существуют другие наборы символов и кодовые страницы, которые представляют разные буквы, цифры, непечатные и акцентированные буквы. Вполне возможно, что двоичный код 01000001 может представлять собой строчную букву z с тильдой сверху в другом наборе символов. "компьютеры" не знают (или не заботятся), что конкретное двоичное представление означает для людей.

"65 - это то же самое, что и буква А": это правда, если вы говорите, что это так. Но не говоря больше, это не очень полезно.

Там нет текста, но закодированный текст. Там нет чисел, но закодированные числа. Для ЦП некоторые числовые кодировки являются родными, все остальное - просто недифференцированные данные.

(Некоторые данные - это просто данные для программ, другие данные - это инструкции ЦП программ. Это проблема безопасности, если ЦП выполняет данные как инструкции ненадлежащим образом. Некоторые архитектуры хранят данные программы и инструкции отдельно.)

Обычные кодировки собственных чисел представляют собой целые числа со знаком и без знака по 1, 2, 4 и 8 байтов и числа с плавающей запятой одинарной и двойной точности IEEE-754. Целые числа со знаком обычно дополняют два. Многобайтовые целые числа имеют порядок байтов (или порядковый номер), потому что на типичных машинах каждый байт адресуется индивидуально. Если числовая кодировка не является родной, для обработки таких данных необходима программная библиотека.

Текст - это последовательность закодированных символов из набора символов. Есть сотни наборов символов. Набор символов - это присвоение концептуального символа номеру, называемому кодовой точкой. Иногда концептуальные символы классифицируются как строчные буквы, цифры, символы и т. Д. Значение кодовой точки отображается в байтах с использованием кодировки символов. Большинство наборов символов имеют одну кодировку, но Unicode имеет несколько. Некоторые наборы символов являются подмножествами других наборов символов - такие отношения, как правило, бесполезны, поскольку в любом контексте используется ровно один набор символов.

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

Сохраняемые данные должны быть в известной структуре кодированного текста и чисел. Иногда макет сохраняется также. Макет называется метаданными. Без метаданных, сопровождающих данные или согласованных, данные не могут быть использованы.

Все довольно просто с соответствующей бухгалтерией. Но есть несколько методов ведения бухгалтерского учета, поэтому нет общего решения, как обрабатывать данные без метаданных. Методы включают в себя: общеизвестные и / или зарегистрированные расширения файлов, HTTP-заголовки, MIME-типы, HTML-тег meta metaset, объявление XML-кодировки. Некоторые методы работают только в определенном контексте, например, аудио / видео кодеки, имеющие четырехсимвольный код (FourCC), и сценарии оболочки Unix с шебангом. Некоторые методы помогают только узкие догадки, такие как подписи файлов. Само собой разумеется, следует избегать угадывания; это приводит к проблемам безопасности и потере данных.

К сожалению, текстовые файлы часто без метаданных. Особенно важно согласовать или отдельно сообщить метаданные.

Данные без метаданных являются "двоичными". Таким образом, автор текста должен согласиться с читателем, на котором должна использоваться кодировка символов. Аналогично для всех типов данных. Здесь читатель и писатель - люди и программы.

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