Как веб-разработчик, я очень мало разбираюсь в двоичных данных.
Если я возьму предложение «Hello world.», Преобразую его в двоичный файл и сохраню как двоичный файл в базе данных SQL, кажется, что 1 и 0 занимают больше места, чем буквы. Мне кажется, что использование букв будет похоже на сжатие, когда один символ обозначает несколько.
Но так ли это на самом деле?
Занимает ли хранение простых текстовых данных меньше места, чем хранение эквивалентного сообщения в двоичном формате
Ответы:
Открытый текст является двоичным.
Когда вы записываете
H
на жесткий диск, пишущая головка не вырезает две вертикальные линии и горизонтальную линию в пластине, она магнитным образом кодирует биты01001000
1 в пластину.Оттуда должно быть очевидно, что хранение простых текстовых данных занимает столько же места, сколько и хранение двоичных данных.
Но открытый текст только один 2 отдельный двоичный формат
Открытый текст может быть обратимо преобразован в другие двоичные форматы. Одним из распространенных преобразований является сжатие, которое обычно приводит к более компактному представлению, что означает меньшее количество битов, используемых для представления одной и той же информации.
В зависимости от того, что вы используете для представления открытого текста, вы можете использовать разные двоичные форматы для представления одной и той же информации. Это может занять больше места, это может использовать меньше.
Например, числа
5
и1234567
могут быть представлены в виде открытого текста с использованием цифровых символов, что приводит к следующим битовым последовательностям на диске 3 :В качестве альтернативы, вы можете использовать 32-битное два дополнения :
Что является менее компактным представлением
5
, но более компактным представлением1234567
.И существует буквально бесконечное число других представлений, которые имели бы различные уровни компактности и гибкости, хотя на практике гораздо меньше, чем это фактически используется.
1 Предполагая UTF-8. Точная последовательность битов для символа зависит от того, какую именно кодировку вы используете.
2 Или действительно, несколько форматов, учитывая различные кодировки .
3 Если вам интересно, что представляют собой эти восемь нулей на концах, вам нужен какой-то способ узнать, как долго хранятся данные. Параметры в основном сводятся к маркеру (я использовал это через нулевой байт), пространству, предназначенному для хранения длины (Паскаль использовал байт для хранения длины строки), или к фиксированному размеру (используется в дополнении двух последующих). пример).
источник
Я считаю, что это очень забавная вещь для размышления. Бинарный это не 1 и 0, как вы говорите об этом.
Представьте, что есть количество, я могу сказать вам, каким оно есть, разными способами:
Nine
по-английскиNeuf
На французском9
арабскими цифрамиIX
римскими цифрами1001
в двоичном с арабскими цифрамиon off off on
в двоичном с вкл / выклhigh low low high
в бинарном виде представлены напряжениями или рычагами или уровнями воды или электрическим зарядом ... или английскими словами 'high' и 'low'Все они представляют собой одно и то же. Дело в том, что двоичные значения не равны 1 и 0, это только один способ представления значения.
Когда вы говорите о преобразовании H в двоичный, вы, вероятно, представляете, что на экране отображается 10101010 - но это не «двоичный код», это одна цифра для каждого двоичного бита.
Да, если вы преобразуете
H
в «двоичный», как обычно говорят об этом люди, а затем представляете, что в арабских цифрах, а затем сохраняете их, это займет больше места так же, как преобразованиеH
вaitch
занимает больше места.Но вы можете видеть, что двоичный файл - это один из способов представления величины, хорошо говоря, что логика гласит: «Если бы я преобразовал H в двоичный файл и представил его таким образом,
high low high low high low high low
он бы занимал 35 символов! Это даже больше, чем10101010
! Но оба эти значения являются« двоичными » .. так как один больше другого?Другая сторона этого удивляться тому, как
H
хранится на компьютере, и видеть , чтоH
сама лишь способ представления количество - такое же количество72
,01001000
илиseventy two
или код ASCII символовH
. Это ответ 8bittree о том, что простой текст является двоичным, но это я пытаюсь показать, что это значит .Таким образом, вы получаете немного шаблон в компьютере
01001000
и что это значит? Все - о чем можно говорить как о числе, как о части zip-файла, как о символе, зависит от намерений человека, который его создал. Если вы знаете, что это должен быть простой текст, то это происходит из кодировки символовH
->01001000
и вы смотрите его в таблице кодировки символов другим способом - ASCII, UTF-8, shift-jis и т. Д. И находите правильный шрифт характер и выход приходитH
или как угодно. Или получится неправильный символ, если вы используете другой поиск кодировки, чем тот, кто его создал. Это ссылка @Eric Lippert.Но когда я пишу это, и, как вы думаете об этом,
H
это один байт и01001000
8 байт, да, это больше места. И да, это (представление) двоичного файла. Но он находится на более высоком уровне абстракции, чем компьютер, - двоичные файлы отображаются в виде символов ASCII, где каждый символ представлен за кулисами с помощью двоичного двоичного шаблона, каждый из которых имеет размер, равныйH
одному.источник
Нет никогда.
Ваш компьютер уже хранит текстовые данные в эквивалентном двоичном представлении. Хранение чего-либо в виде простого текста в сравнении с двоичным просто сигнализирует о том, как компьютер должен интерпретировать этот идентичный двоичный поток.
Это своего рода правда. Один символ будет представлять более одного бита. Проблема в том, что они разных размеров. Для хранения 1 или 0 требуется всего один бит, а для хранения простого текста - 8 бит (или более). Вы ничего не получаете, используя символы.
Во всяком случае , вы можете сжать вещи по-другому. В конце концов, 8 бит - это 256 различных возможных значений, но обычный текст обычно ограничен буквами, цифрами и несколькими знаками препинания. Ему не нужно столько бит, сколько нужно.
источник