Сколько бит занимает 1 символ

от admin

Определить объём текста

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

Информационный вес (объем) символа текста определяется для следующих кодировок:
Unicode UTF-8
Unicode UTF-16
ASCII, ANSI, Windows-1251

Почему на windows сохраняя текст блокноте перенос строки занимает — 4 байта в юникоде или 2 байта в анси?
Это историческое явление, которое берёт начало с дос, последовательность OD OA (\n\r ) в виндовс используются чтоб был единообразный вывод на терминал независимо консоль это или принтер. Но для вывода просто на консоль достаточно только \n.

В юникоде есть символы которые весят 4 байта, например эмоджи: 🙃

Компьютерная грамотность с Надеждой

Заполняем пробелы — расширяем горизонты!

Единицы измерения объема информации

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

Бит и байт — минимальные единицы измерения информации

Мы уже знаем, что компьютер воспринимает всю информацию через нули и единички.

Бит – это минимальная единица измерения информации, соответствующая одной двоичной цифре («0» или «1»).

Бит — это только 0 («ноль») или только 1 («единичка»). С помощью одного бита можно записать одно из двух состояний: 0 (ноль) или 1 (один). Чтобы записать два состояния, потребуется два бита. Бит — это минимальная ячейка памяти, меньше не бывает. В этой ячейке может храниться либо нолик, либо единичка.

Байт состоит из восьми бит. Используя один байт, можно закодировать один символ из 256 возможных (256 = 2 8 ). Таким образом, один байт равен одному символу, то есть 8 битам:

1 символ = 8 битам = 1 байту.

Буква, цифра, знак препинания — это символы. Одна буква — один символ. Одна цифра — тоже один символ. Один знак препинания (либо точка, либо запятая, либо вопросительный знак и т.п.) — снова один символ. Один пробел также является одним символом.

Кроме бита и байта, конечно же, есть и другие, более крупные единицы измерения информации.

Таблица байтов:

1 Кб (1 Килобайт) = 2 10 байт = 2*2*2*2*2*2*2*2*2*2 байт =
= 1024 байт (примерно 1 тысяча байт – 10 3 байт)

1 Мб (1 Мегабайт) = 2 20 байт = 1024 килобайт (примерно 1 миллион байт – 10 6 байт)

1 Гб (1 Гигабайт) = 2 30 байт = 1024 мегабайт (примерно 1 миллиард байт – 10 9 байт)

1 Тб (1 Терабайт) = 2 40 байт = 1024 гигабайт (примерно 10 12 байт). Терабайт иногда называют тонна.

1 Пб (1 Петабайт) = 2 50 байт = 1024 терабайт (примерно 10 15 байт).

1 Эксабайт = 2 60 байт = 1024 петабайт (примерно 10 18 байт).

1 Зеттабайт = 2 70 байт = 1024 эксабайт (примерно 10 21 байт).

1 Йоттабайт = 2 80 байт = 1024 зеттабайт (примерно 10 24 байт).

В приведенной выше таблице степени двойки (2 10 , 2 20 , 2 30 и т.д.) являются точными значениями килобайт, мегабайт, гигабайт. А вот степени числа 10 (точнее, 10 3 , 10 6 , 10 9 и т.п.) будут уже приблизительными значениями, округленными в сторону уменьшения. Таким образом, 2 10 = 1024 байта представляет точное значение килобайта, а 10 3 = 1000 байт является приблизительным значением килобайта.

Такое приближение (или округление) вполне допустимо и является общепринятым.

Ниже приводится таблица байтов с английскими сокращениями (в левой колонке):

10 3 b = 10*10*10 b= 1000 b – килобайт

10 6 b = 10*10*10*10*10*10 b = 1 000 000 b – мегабайт

10 9 b – гигабайт

10 12 b – терабайт

10 15 b – петабайт

10 18 b – эксабайт

10 21 b – зеттабайт

10 24 b – йоттабайт

Выше в правой колонке приведены так называемые «десятичные приставки», которые используются не только с байтами, но и в других областях человеческой деятельности. Например, приставка «кило» в слове «килобайт» означает тысячу байт. В случае с километром она соответствует тысяче метров, а в примере с килограммом она равна тысяче грамм.

Продолжение следует…

Возникает вопрос: есть ли продолжение у таблицы байтов? В математике есть понятие бесконечности, которое обозначается как перевернутая восьмерка: ∞.

Понятно, что в таблице байтов можно и дальше добавлять нули, а точнее, степени к числу 10 таким образом: 10 27 , 10 30 , 10 33 и так до бесконечности. Но зачем это надо? В принципе, пока хватает терабайт и петабайт. В будущем, возможно, уже мало будет и йоттабайта.

Напоследок парочка примеров по устройствам, на которые можно записать терабайты и гигабайты информации.

Есть удобный «терабайтник» – внешний жесткий диск, который подключается через порт USB к компьютеру. На него можно записать терабайт информации. Особенно удобно для ноутбуков (где смена жесткого диска бывает проблематична) и для резервного копирования информации. Лучше заранее делать резервные копии информации, а не после того, как все пропало.

Флешки бывают 1 Гб, 2 Гб, 4 Гб, 8 Гб, 16 Гб, 32 Гб , 64 Гб и даже 1 терабайт.

CD-диски могут вмещать 650 Мб, 700 Мб, 800 Мб и 900 Мб.

DVD-диски рассчитаны на большее количество информации: 4.7 Гб, 8.5 Гб, 9.4 Гб и 17 Гб.

Подробнее о единицах измерения количества информации

Числа в двоичной системе

Данные и их хранение необходимы для работы компьютеров и цифровой техники. Данные — это любая информация, от команд до файлов, созданных пользователями, например текст или видео. Данные могут храниться в разных форматах, но чаще всего их сохраняют как двоичный код. Некоторые данные хранятся временно и используются только во время исполнения определенных операций, а потом удаляются. Их записывают на устройствах временного хранения информации, например, в оперативной памяти, известной под названием запоминающего устройства с произвольным доступом (по-английски, RAM — Random Access Memory) или ОЗУ — оперативное запоминающее устройство. Некоторую информацию хранят дольше. Устройства, обеспечивающие более длительное хранение — это жесткие диски, твердотельные накопители, и различные внешние накопители.

Подробнее о данных

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

Избыточность

Во избежание потери данных при поломках используют принцип избыточности, то есть хранят копии данных в разных местах. Если эти данные перестанут читаться в одном месте, то их можно будет считать в другом. На этом принципе основывается работа избыточного массива независимых дисков RAID (от английского reduntant array of independent discs). В нем копии данных хранятся на двух или более дисках, объединенных в один логический блок. В некоторых случаях для большей надежности копируют сам RAID-массив. Копии иногда хранят отдельно от основного массива, иногда в другом городе или даже в другой стране, на случай уничтожения массива во время катаклизмов, катастроф, или войн.

Форматы хранения данных

Иерархия хранения данных

Данные обрабатываются в центральном процессоре, и чем ближе к процессору устройство, которое их хранит, тем быстрее их можно обработать. Скорость обработки данных также зависит от вида устройства, на котором они хранятся. Пространство внутри компьютера рядом с микропроцессором, где можно установить такие устройства, ограничено, и обычно самые быстрые, но маленькие устройства находятся ближе всего к микропроцессору, а те, что больше но медленнее — дальше от него. Например, регистр внутри процессора очень мал, но позволяет считывать данные со скоростью одного цикла процессора, то есть, в течение нескольких миллиардных долей секунды. Эти скорости с каждым годом улучшаются.

Карта памяти

Первичная память

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

Вторичная память

Устройства вторичной памяти, например накопитель на жестких магнитных дисках (НЖМД) или винчестер, находятся внутри компьютера. На них хранятся данные, которые не так часто используются. Они хранятся дольше, и не удаляются автоматически. В основном их удаляют сами пользователи или программы. Доступ к этим данным происходит медленнее, чем к данным в первичной памяти.

Внешняя память

Внешнюю память иногда включают во вторичную память, а иногда — относят в отдельную категорию памяти. Внешняя память — это сменные носители, например оптические (CD, DVD и Blu-ray), Flash-память, магнитные ленты и бумажные носители информации, такие как перфокарты и перфоленты. Оператору необходимо вручную вставлять такие носители в считывающие устройства. Эти носители сравнительно дешевы по сравнению с другими видами памяти и их часто используют для хранения резервных копий и для обмена информацией из рук в руки между пользователями.

Третичная память

Третичная память включает в себя запоминающие устройства большого объема. Доступ к данным на таких устройствах происходит очень медленно. Обычно они используются для архивации информации в специальных библиотеках. По запросу пользователей механическая «рука» находит и помещает в считывающее устройство носитель с запрошенными данными. Носители в такой библиотеке могут быть разные, например оптические или магнитные.

Виды носителей

Привод DVD

Оптические носители

Информацию с оптических носителей считывают в оптическом приводе с помощью лазера. Во время написания этой статьи (весна 2013 года) самые распространенные оптические носители — оптические диски CD, DVD, Blu-ray и Ultra Density Optical (UDO). Накопитель может быть один, или их может быть несколько, объединенных в одном устройстве, как например в оптических библиотеках. Некоторые оптические диски позволяют осуществлять повторную запись.

Полупроводниковые носители

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

Почти все первичные устройства памяти, а также устройства флеш-памяти — полупроводниковые. В последнее время в качестве альтернативы жестким дискам становятся более популярными твердотельные накопители SSD (от английского solid-state drives). Во время написания этой статьи эти накопители стоили намного дороже жестких дисков, но скорость записи и считывания информации на них значительно выше. При падениях и ударах они повреждаются намного меньше, чем магнитные жесткие диски, и работают практически безшумно. Кроме высокой цены, твердотельные накопители, по сравнению с магнитными жесткими дисками, со временем начинают работать хуже, и потерянные данные на них очень сложно восстановить, по сравнению с жесткими дисками. Гибридные жесткие диски совмещают твердотельный накопитель и магнитный жесткий диск, увеличивая тем самым скорость и срок эксплуатации, и уменьшая цену, по сравнению с твердотельными накопителями.

Накопитель на жестких магнитных дисках

Магнитные носители

Поверхности для записи на магнитных носителях намагничиваются в определенной последовательности. Магнитная головка считывает и записывает на них данные. Примерами магнитных носителей являются накопители на жестких магнитных дисках и дискеты, которые уже почти полностью вышли из употребления. Аудио и видео также можно хранить на магнитных носителях — кассетах. Пластиковые карты часто хранят информацию на магнитных полосах. Это могут быть дебетовые и кредитные карты, карты-ключи в гостиницах, водительские права, и так далее. В последнее время в некоторые карты встраивают микросхемы. Такие карты обычно содержат микропроцессор и могут выполнять криптографические вычисления. Их называют смарт-картами.

Читать:
Atmega 168 или 328 в чем разница

Бумажные носители

До появления магнитных и других носителей данные хранили на бумаге. Обычно в таком виде были записаны машинные команды, и их могли читать как люди, так и машины, например компьютеры или ткацкие станки. В основном для этих целей использовали перфокарты и перфоленты, где информация хранилась в виде чередующихся отверстий, и отсутствия отверстий. Перфоленту использовали, чтобы записывать текст на телеграфе и в типографии или редакции газет, а также в кассовых аппаратах. Постепенно с конца 50-x и до конца 80-х их заменили магнитные носители. Сейчас бумажные носители используют для подсчета голосов на выборах и для автоматической проверки контрольных работ, ответы к которым записываются на специальную карту, а потом читаются компьютером.

UTF-8 vs UTF-16. Несколько советов программистам

С появлением первых устройств цифровой передачи информации и электронно-вычислительных машин возникла задача кодирования текстовых символов с помощью последовательностей единиц и нулей. Минимальная единица представления информации – байт. Исходя их этого в 1963 году в США разработана, стандартизована, а впоследствии расширена кодовая таблица ASCII (American standard code for information interchange), использовавшая 8 битную кодировку. В первую очередь с помощью этой таблицы предполагалось кодирование цифр и букв английского языка. Первые 128 символов таблицы представлены на рис.1:

Рис.1. Первые 128 символов таблицы ASCII.

Рис.1. Первые 128 символов таблицы ASCII.

Номер ячейки в таблице (рис.1) является кодом символа. В качестве примера рассмотрим кодирование слова Hello. Номера ячеек таблицы ASCII, в которых размещены буквы: 72 (H), 101 (e), 108 (l), 111 (o). Код слова в бинарном представлении выглядит следующим образом:

00010010 (H) 10100110 (e) 00110110 (l) 00110110 (l) 11110110 (o) (старший бит справа).

Выделенные подчеркиванием и жирным коды в двоичном представлении соответствуют номерам ячеек в таблице (рис.1). Алгоритм формирования кода следующий:

1. Выделены жирным – биты управления кодированием (префикс). 010 – кодируется заглавная буква алфавита, 011 – строчная.

2. Выделены подчеркиванием – порядковые номера букв в английском алфавите.

Таким образом, с помощью первых 128 ячеек таблицы ASCII могли быть закодированы основные символы, цифры и буквы английского языка. Остальные 128 ячеек (8 битная кодировка позволяет закодировать 256 символов) могли использоваться для кодирования других языков. Однако, учитывая разнообразие символов и языков, 8 бит недостаточно.

Стандарт Юникод

Консорциум Unicode (Юникод) – некоммерческая организация, главной задачей которой являлась разработка стандарта кодирования (стандарт Юникод) с поддержкой наибольшего числа языков и символов служебного характера. Принцип кодирования на основе таблицы сохранился, а таблица (таблица Юникод) была значительно расширена.

Стандарт Юникод предоставляет пользователям таблицу Юникод и способы кодирования символов.

Символы таблицы Юникод являются элементами «универсального набора символов» UCS (Universal Coded Character Set), определенного международным стандартом ISO/IEC 10646. Таблица Юникод каждому символу UCS сопоставляет кодовую точку, которая является номером ячейки таблицы, содержащей символ.

Способы кодирования символов таблицы Юникод, т.е. преобразования номеров ячеек таблицы Юникод в бинарные коды, составляют кодовое пространство, состоящее из трех кодов семейства UTF (Unicode Transformation Format): UTF-8, UTF-16 и UTF-32

UTF-8 – стандарт кодирования, преобразующий номера ячеек таблицы Юникод в бинарные коды с использованием переменного количества бит: 8, 16, 24 или 32.

UTF-16 – стандарт кодирования, преобразующий номера ячеек таблицы Юникод в бинарные коды с использованием переменного количества бит:16 или 32.

Коды UTF-8 и UTF-16 используют разные алгоритмы кодирования набора символов UCS.

Стандарт кодирования UTF-8

Стандарт закреплен в RFC (Request For Comments) 3629. Алгоритм кодирования согласно RFC:

0xxxxxxx

110xxxxx 10xxxxxx

1110xxxx 10xxxxxx 10xxxxxx

11110xx 10xxxxxx 10xxxxxx 10xxxxxx

Старший бит слева. Началом кода является управляющий символ (выделен жирным):

0 – используется 8-битная кодировка,

110 – используется 16-битная кодировка,

1110 – используется 24-битная кодировка,

11110 – используется 32 битная кодировка.

В начале каждого последующего байта – биты 10 – управляющий символ (выделен подчеркиванием), означающий продолжение кодирования.

Первые 128 ячеек таблицы Юникод повторяют таблицу ASCII. Для кодирования заглавных и строчных букв русского алфавита используются ячейки с номерами 1040-1103.

Рассмотрим пример кодирования фразы «Папа Hello».

Код в бинарном виде (старший бит справа):

00001011 11111001 (П) 00001011 00001101 (а) 00001011 11111101 (п) 00001011 00001101 (а) 00000100 (пробел) 00010010 (H) 10100110 (e) 00110110 (l) 00110110 (l) 11110110 (o).

Букве П русского алфавита согласно таблицы Юникод соответствует номер 1055, в бинарном представлении 10000011111 – 11 бит. Соответственно данный символ может быть закодирован двумя байтами с использованием префикса 110 – для первого байта и 10 – для второго байта. Английские буквы слова Hello кодируются 1 байтом, а коды совпадают с кодами в таблице ASCII.

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

Стандарт кодирования UTF-16

В феврале 2000 года опубликован документ RFC 2781, в котором закреплен стандарт UTF-16, позволяющий кодировать символы таблицы Юникод с помощью 16 или 32 битных значений. Символы с номерами 0-55295 и 57344-65535 кодируются с помощью 16 бит без изменений (без использования префиксов), а остальные символы, номера которых в двоичном представлении формируются количеством бит больше 16, кодируются 32 битами с использованием специального алгоритма. Рассмотрим пример кодирования фразы «Папа Hello».

Код в бинарном виде (старший бит справа):

11111000 00100000 (П) 00001100 001000000 (а) 11111100 00100000 (п) 00001100 001000000 (а) 00000100 00000000 (пробел) 00010010 00000000 (H) 10100110 00000000 (e) 00110110 00000000 (l) 00110110 00000000 (l) 111110110 00000000 (o).

Номера букв русского и английского алфавитов таблицы Юникод передаются без изменений при помощи 16 бит, старшие незначащие биты принимают нулевое значение.

Рассмотрим подробнее алгоритм кодирования символов, номера которых превышают значение 65535. Для примера в качестве символа используем букву древнетюркского алфавита, представленную на рис.2:

Рис.2. Буква древнетюркского алфавита.Рис.2. Буква древнетюркского алфавита.

Номер предложенного символа в таблице Юникод – 68620 (0х10COC).

Алгоритм преобразования номера символа в код UTF-16 состоит из нескольких шагов:

Из значения номера символа вычесть число 0х10000. Данная операция позволяет привести размерность бинарного представления номера символа к 20 битам. Для предложенного символа получим: 0х10COC – 0x10000 = 0xC0C.

Для полученного значения выделить старшие 10 бит и младшие 10 бит. В примере число 0хС0С в бинарном виде представляется, как 00000000110000001100, где жирным выделены 10 старших бит, а подчеркиванием – 10 младших.

К шестнадцатеричному значению 0xD800 (11011000 00000000) прибавить значение 0х03 (00000000 00000011), сформированное 10 старшими битами, полученными на предыдущем шаге. 0xD800 + 0х03 = 0хD803 (11011000 00000011) – 16 старших бит кодового слова UTF-16.

К шестнадцатеричному значению 0xDC00 (11011000 00000000) прибавить значение 0х0C (00000000 00001100), сформированное 10 младшими битами, полученными на шаге №2. 0xDС00 + 0х0С = DС0С (11011100 00001100) – 16 младших бит кодового слова UTF-16.

Кодовое слово UTF-16, соответствующее символу в примере, формируется из бит, полученных на шагах 3 и 4: 0хD803DC0C (11011000 00000011 11011100 00001100).

Сравнение стандартов UTF-8 и UTF-16 с точки зрения объема машинной памяти, используемой кодом для представления символов

Результаты сравнения стандартов представлены в таблице 1.

Таблица 1. Результаты сравнения стандартов.

В ячейках таблицы 1 содержится количество бит, требуемое для кодирования одного символа из таблицы Юникод. Видно, что для диапазонов номеров ячеек 128-2047, 65535-1048575 стандарты UTF-8 и UTF-16 используют одинаковое количество бит. Для диапазона 0-127 выгодно использование стандарта UTF-8, например, в случае, если программисту поручили реализовать кодер букв английского алфавита. Для диапазонов 2048-32767 и 32768-65535 выгодно использование стандарта UTF-16, например, в случае, если программисту поручили реализовать кодер иероглифов Бопомофо (занимают в таблице Юникод диапазон ячеек 12549-12589). Кодирование символов таблицы Юникод, расположенных в ячейках, номера которых начинаются от 1048575 возможно только с использованием кодировки UTF-16.

В предыдущих главах приведены примеры кодирования фразы «Папа Hello» стандартами UTF-8 и UTF-16. Кодировкой UTF-8 используются 14 байт, кодировкой UTF-16 20 байт, что связано с избыточностью кодирования англоязычных символов во втором случае из-за использования дополнительного байта 0х00. Можно сделать вывод, что для кодирования текста содержащего набор букв русского и английского алфавитов, предпочтительно использование кодировки UTF-8.

Вывод: в зависимости от языка алфавита может быть выбрана как кодировка UTF-8, так и кодировка UTF-16. Для английского алфавита однозначно более выгодно использование кодировки UTF-8, для русского алфавита буквы представляются одинаковым количеством бит при использовании как одной, так и другой кодировки.

Несколько советов программистам

Допустим, программист решил реализовать текстовый редактор, поддерживающий алфавит языка Бопомофо. Символы данного языка располагаются в таблице Юникод в диапазоне 12549-12589 и, следовательно, программисту необходимо выбрать стандарт UTF-16 для кодирования. Предположим, что для ввода символов решено использовать программную клавиатуру, состоящую из кнопок, каждая из которых соответствует букве алфавита языка. Кнопки – объекты класса button. Нажатие пользователем на какую-либо из кнопок порождает событие, в результате которого приложению становится известен номер ячейки таблицы Юникод. Программисту рекомендуется:

1.Хранить в памяти приложения символы таблицы Юникод и номера ячеек, соответствующие только языкам, поддержка которых планируется в текстовом редакторе. Это уменьшит объем памяти, занимаемой приложением, а также повысит скорость его работы, сузив область поиска номера ячейки.

2. При реализации приложения заранее выполнить преобразование всех номеров ячеек в их бинарные коды. Результат преобразования сохранить в файле, в формализованном виде. При загрузке приложения выполнить считывание в память номеров ячеек и их бинарных кодов UTF-16. Это позволит снизить вычислительную нагрузку приложения в ходе его работы.

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

Отметим проблему кодирования составных символов, которая является важным техническим аспектом. Например, символ ü может быть интерпретирован, как самостоятельный символ, которому соответствует номер ячейки 252 или может быть скомпонован из двух символов: u, которому соответствует номер ячейки 117 и символа ¨, которому соответствует номер ячейки 776. Программист должен строго придерживаться одного из вариантов представления таких символов иначе побайтовое сравнение строк будет невозможно. Рекомендуется использование второго варианта, который может облегчить поиск составных символов в тексте. Например, если пользователь осуществляет поиск символа u, то ему может быть выведен в качестве результата, как составной символ ü, так и самостоятельный u.

Похожие статьи