Utf 32 сколько байт
Перейти к содержимому

Utf 32 сколько байт

  • автор:

Представление символов, таблицы кодировок

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

Количество символов, которые можно задать последовательностью бит длины [math]n[/math] , задается простой формулой [math]C(n) = 2^n[/math] . Таким образом, от нужного количества символов напрямую зависит количество используемой памяти.

Таблицы кодировок

На заре компьютерной эры на каждый символ было отведено по пять бит. Это было связано с малым количеством оперативной памяти на компьютерах тех лет. В эти [math]32[/math] символа входили только управляющие символы и строчные буквы английского алфавита.

С ростом производительности компьютеров стали появляться таблицы кодировок с большим количеством символов. Первой семибитной кодировкой стала ASCII7. В нее уже вошли прописные буквы английского алфавита, арабские цифры, знаки препинания. Затем на ее базе была разработана ASCII8, в которым уже стало возможным хранение [math]256[/math] символов: [math]128[/math] основных и еще столько же расширенных. Первая часть таблицы осталась без изменений, а вторая может иметь различные варианты (каждый имеет свой номер). Эта часть таблицы стала заполняться символами национальных алфавитов.

Но для многих языков (например, арабского, японского, китайского) [math]256[/math] символов недостаточно, поэтому развитие кодировок продолжалось, что привело к появлению UNICODE.

Кодировки стандарта ASCII

Определение:
ASCII — таблицы кодировок, в которых содержатся основные символы (английский алфавит, цифры, знаки препинания, символы национальных алфавитов(свои для каждого региона), служебные символы) и длина кода каждого символа [math]n = 8[/math] бит.
  • ASCII7 — первая кодировка, пригодная для работы с текстом. Помимо маленьких букв английского алфавита и служебных символов, содержит большие буквы английского языка, цифры, знаки препинания и другие символы.

Кодировки стандарта ASCII ( [math]8[/math] бит):

  • ASCII — первая кодировка, в которой стало возможно использовать символы национальных алфавитов.
  • КОИ8-R — первая русская кодировка. Символы кириллицы расположены не в алфавитном порядке. Их разместили в верхнюю половину таблицы так, чтобы позиции кириллических символов соответствовали их фонетическим аналогам в английском алфавите. Это значит, что даже при потере старшего бита каждого символа, например, при проходе через устаревший семибитный модем, текст остается «читаемым».
  • CP866 — русская кодировка, использовавшаяся на компьютерах IBM в системе DOS.
  • Windows-1251 — русская кодировка, использовавшаяся в русскоязычных версиях операционной системы Windows в начале 90-х годов. Кириллические символы идут в алфавитном порядке. Содержит все символы, встречающиеся в типографике обычного текста (кроме знака ударения).

Структурные свойства таблицы

Кодировки стандарта UNICODE

Юникод или Уникод (англ. Unicode) — это промышленный стандарт обеспечивающий цифровое представление символов всех письменностей мира, и специальных символов.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей. Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам — элементам кодового пространства, представляющим неотрицательные целые числа.Семейство кодировок определяет машинное представление последовательности кодов UCS.

Коды в стандарте Unicode разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F. Часть кодов зарезервирована для использования в будущем.

Кодовое пространство

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до [math]2^[/math] [math](2\ 147\ 483\ 648)[/math] кодовых позиций, было принято решение использовать лишь [math]1\ 112\ 064[/math] для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее [math]110\ 000[/math] кодовых позиций ( [math]109\ 242[/math] графических и [math]273[/math] прочих символов).

Кодовое пространство разбито на [math]17[/math] плоскостей (англ. planes) по [math]2^[/math] [math](65\ 536)[/math] символов. Нулевая плоскость называется базовой, в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая — для для редко используемых иероглифов китайского письма, третья зарезервирована для архаичных китайских иероглифов. Плоскости [math]15[/math] и [math]16[/math] выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx» (для кодов [math]0000_..FFFF_[/math] ) или «U+xxxxx» (для кодов [math]10000_..FFFFF_[/math] ) или «U+xxxxxx» (для кодов [math]100000_..10FFFF_[/math] ), где xxx — шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код [math]044F_ = 1103_[/math] .

Плоскости Юникода
Плоскость Название Диапазон символов
Plane 0 Basic multilingual plane (BMP) U+0000…U+​FFFF
Plane 1 Supplementary multilingual plane (SMP) U+10000…U+​1FFFF
Plane 2 Supplementary ideographic plane (SIP) U+20000…U+​2FFFF
Planes 3-13 Unassigned U+30000…U+​DFFFF
Plane 14 Supplement­ary special-purpose plane (SSP) U+E0000…U+​EFFFF
Planes 15-16 Supplement­ary private use area (S PUA A/B) U+F0000…U+​10FFFF

Модифицирующие символы

Ji.png

Графические символы в Юникоде делятся на протяжённые и непротяжённые. Непротяжённые символы при отображении не занимают дополнительного места в строке. К примеру, к ним относятся знак ударения. Протяжённые и непротяжённые символы имеют собственные коды, но последние не могут встречаться самостоятельно. Протяжённые символы называются базовыми (англ. base characters), а непротяженные — модифицирующими (англ. combining characters). Например символ «Й» (U+0419) может быть представлен в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306).

Способы представления

Юникод имеет несколько форм представления (англ. Unicode Transformation Format, UTF): UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт.

UTF-8

UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими [math]8[/math] -битные символы. Текст, состоящий только из символов с номером меньше [math]128[/math] , при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше [math]128[/math] изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от двух до шести байт (на деле, только до четырех байт, поскольку в Юникоде нет символов с кодом больше [math]10FFFF_[/math] , и вводить их в будущем не планируется), в которых первый байт всегда имеет вид [math]11xxxxxx[/math] , а остальные — [math]10xxxxxx[/math] .

Символы UTF-8 получаются из Unicode cледующим образом:

Unicode UTF-8 Представленные символы
0x00000000 — 0x0000007F 0xxxxxxx ASCII, в том числе английский алфавит, простейшие знаки препинания и арабские цифры
0x00000080 — 0x000007FF 110xxxxx 10xxxxxx кириллица, расширенная латиница, арабский алфавит, армянский алфавит, греческий алфавит, еврейский алфавит и коптский алфавит; сирийское письмо, тана, нко; Международный фонетический алфавит; некоторые знаки препинания
0x00000800 — 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx все другие современные формы письменности, в том числе грузинский алфавит, индийское, китайское, корейское и японское письмо; сложные знаки препинания; математические и другие специальные символы
0x00010000 — 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx музыкальные символы, редкие китайские иероглифы, вымершие формы письменности
111111xx служебные символы c, d, e, f

Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы, называемые overlong sequence, отвергаются по соображениям безопасности.

Принцип кодирования
Правила записи кода одного символа в UTF-8

1. Если размер символа в кодировке UTF-8 = [math]1[/math] байт

Код имеет вид (0aaa aaaa), где «0» — просто ноль, остальные биты «a» — это код символа в кодировке ASCII;

2. Если размер символа в кодировке в UTF-8 [math]\gt 1[/math] байт (то есть от [math]2[/math] до [math]6[/math] ):

2.1 Первый байт содержит количество байт символа, закодированное в единичной системе счисления;

2 — 11 3 — 111 4 — 1111 5 — 1111 1 6 — 1111 11

2.2 «0» — бит терминатор, означающий завершение кода размера 2.3 далее идут значащие байты кода, которые имеют вид (10xx xxxx), где «10» — биты признака продолжения, а «x» — значащие биты.

В общем случае варианты представления одного символа в кодировке UTF-8 выглядят так:

(1 байт) 0aaa aaaa (2 байта) 110x xxxx 10xx xxxx (3 байта) 1110 xxxx 10xx xxxx 10xx xxxx (4 байта) 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx (5 байт) 1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx (6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
Определение длины кода в UTF-8
Количество байт UTF-8 Количество значащих бит
[math]1[/math] [math]7[/math]
[math]2[/math] [math]11[/math]
[math]3[/math] [math]16[/math]
[math]4[/math] [math]21[/math]
[math]5[/math] [math]26[/math]
[math]6[/math] [math]31[/math]

В общем случае количество значащих бит [math]C[/math] , кодируемых [math]n[/math] байтами UTF-8, определяется по формуле:

[math]C = 7[/math] при [math]n=1[/math]

[math]C = n\cdot5+1[/math] при [math]n\gt 1[/math]

UTF-16

UTF-16 — один из способов кодирования символов (англ. code point) из Unicode в виде последовательности [math]16[/math] -битных слов (англ. code unit). Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и U+E000..U+10FFFF (общим количеством [math]1\ 112\ 064[/math] ), причем [math]2[/math] -байтные символы представляются как есть, а более длинные — с помощью суррогатных пар (англ. surrogate pair), для которых и вырезан диапазон [math]D800_..DFFF_[/math] .

В UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от [math]0000_[/math] до [math]FFFF_[/math] ). При этом можно кодировать символы Unicode в диапазонах [math]0000_..D7FF_[/math] и [math]E000_..10FFFF_[/math] . Исключенный отсюда диапазон [math]D800_..DFFF_[/math] используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя [math]16[/math] -битными словами. Символы Unicode до [math]FFFF_[/math] включительно (исключая диапазон для суррогатов) записываются как есть [math]16[/math] -битным словом. Символы же в диапазоне [math]10000_..10FFFF_[/math] (больше [math]16[/math] бит) уже кодируются парой [math]16[/math] -битных слов. Для этого их код арифметически сдвигается до нуля (из него вычитается минимальное число [math]10000_[/math] ). В результате получится значение от нуля до [math]FFFFF_[/math] , которое занимает до [math]20[/math] бит. Старшие [math]10[/math] бит этого значения идут в лидирующее (первое) слово, а младшие [math]10[/math] бит — в последующее (второе). При этом в обоих словах старшие [math]6[/math] бит используются для обозначения суррогата. Биты с [math]11[/math] по [math]15[/math] имеют значения [math]11011_2[/math] , а [math]10[/math] -й бит содержит [math]0[/math] у лидирующего слова и [math]1[/math] — у последующего. В связи с этим можно легко определить к чему относится каждое слово.

UTF-16LE и UTF-16BE

Один символ кодировки UTF-16 представлен последовательностью двух байт или двух пар байт. Который из двух байт в словах идёт впереди, старший или младший, зависит от порядка байт. Подробнее об этом будет сказано ниже.

UTF-32

UTF-32 — один из способов кодирования символов из Юникод, использующий для кодирования любого символа ровно [math]32[/math] бита. Остальные кодировки, UTF-8 и UTF-16, используют для представления символов переменное число байт. Символ UTF-32 является прямым представлением его кодовой позиции (англ. code point).

Главное преимущество UTF-32 перед кодировками переменной длины заключается в том, что символы Юникод непосредственно индексируемы. Получение [math]n[/math] -ой кодовой позиции является операцией, занимающей одинаковое время. Напротив, коды с переменной длиной требует последовательного доступа к [math]n[/math] -ой кодовой позиции. Это делает замену символов в строках UTF-32 простой, для этого используется целое число в качестве индекса, как обычно делается для строк ASCII.

Главный недостаток UTF-32 — это неэффективное использование пространства, так как для хранения символа используется четыре байта. Символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства редко используются в большинстве текстов. Поэтому удвоение, в сравнении с UTF-16, занимаемого строками в UTF-32 пространства не оправдано.

Хотя использование неменяющегося числа байт на символ удобно, но не настолько, как кажется. Операция усечения строк реализуется легче в сравнении с UTF-8 и UTF-16. Но это не делает более быстрым нахождение конкретного смещения в строке, так как смещение может вычисляться и для кодировок фиксированного размера. Это не облегчает вычисление отображаемой ширины строки, за исключением ограниченного числа случаев, так как даже символ «фиксированной ширины» может быть получен комбинированием обычного символа с модифицирующим, который не имеет ширины. Например, буква «й» может быть получена из буквы «и» и диакритического знака «крючок над буквой». Сочетание таких знаков означает, что текстовые редакторы не могут рассматривать [math]32[/math] -битный код как единицу редактирования. Редакторы, которые ограничиваются работой с языками с письмом слева направо и составными символами (англ. Precomposed character), могут использовать символы фиксированного размера. Но такие редакторы вряд ли поддержат символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства и вряд ли смогут работать одинаково хорошо с символами UTF-16.

Порядок байт

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

В общем случае, для представления числа [math]M[/math] , большего [math]255[/math] (здесь [math]255=2^8-1[/math] — максимальное целое число, записываемое одним байтом), приходится использовать несколько байт. При этом число [math]M[/math] записывается в позиционной системе счисления по основанию [math]256[/math] :

[math]M = \sum_^A_i\cdot 256^i=A_0\cdot 256^0+A_1\cdot 256^1+A_2\cdot 256^2+\dots+A_n\cdot 256^n.[/math]

Набор целых чисел [math]A_0,\dots,A_n[/math] , каждое из которых лежит в интервале от [math]0[/math] до [math]255[/math] , является последовательностью байт, составляющих [math]M[/math] . При этом [math]A_0[/math] называется младшим байтом, а [math]A_n[/math] — старшим байтом числа [math]M[/math] .

Варианты записи
Порядок от старшего к младшему

Порядок от старшего к младшему (англ. big-endian): [math]A_n,\dots,A_0[/math] , запись начинается со старшего и заканчивается младшим. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому, порядок байт от старшего к младшему часто называют сетевым порядком байт (англ. network byte order). Этот порядок байт используется процессорами IBM 360/370/390, Motorola 68000, SPARC (отсюда третье название — порядок байт Motorola, Motorola byte order).

В этом же виде (используя представление в десятичной системе счисления) записываются числа индийско-арабскими цифрами в письменностях с порядком знаков слева направо (латиница, кириллица). Для письменностей с обратным порядком (арабская) та же запись числа воспринимается как «от младшего к старшему».

Порядок байт от старшего к младшему применяется во многих форматах файлов — например, PNG, FLV, EBML.

Порядок от младшего к старшему

Порядок от младшего к старшему (англ. little-endian): [math]A_0,\dots,A_n[/math] , запись начинается с младшего и заканчивается старшим. Этот порядок записи принят в памяти персональных компьютеров с x86-процессорами, в связи с чем иногда его называют интеловский порядок байт (по названию фирмы-создателя архитектуры x86).

В противоположность порядку big-endian, соглашение little-endian поддерживают меньше кросс-платформенных протоколов и форматов данных; существенные исключения: USB, конфигурация PCI, таблица разделов GUID, рекомендации FidoNet.

Переключаемый порядок

Многие процессоры могут работать и в порядке от младшего к старшему, и в обратном, например, ARM, PowerPC (но не PowerPC 970), DEC Alpha, MIPS, PA-RISC и IA-64. Обычно порядок байт выбирается программно во время инициализации операционной системы, но может быть выбран и аппаратно перемычками на материнской плате. В этом случае правильнее говорить о порядке байт операционной системы. Переключаемый порядок байт иногда называют англ. bi-endian.

Смешанный порядок

Смешанный порядок байт (англ. middle-endian) иногда используется при работе с числами, длина которых превышает машинное слово. Число представляется последовательностью машинных слов, которые записываются в формате, естественном для данной архитектуры, но сами слова следуют в обратном порядке.

Классический пример middle-endian — представление [math]4[/math] -байтных целых чисел на [math]16[/math] -битных процессорах семейства PDP-11 (известен как PDP-endian). Для представления двухбайтных значений (слов) использовался порядок little-endian, но [math]4[/math] -хбайтное двойное слово записывалось от старшего слова к младшему.

В процессорах VAX и ARM используется смешанное представление для длинных вещественных чисел.

Различия

Endian.png

Существенным достоинством little-endian по сравнению с big-endian порядком записи считается возможность «неявной типизации» целых чисел при чтении меньшего объёма байт (при условии, что читаемое число помещается в диапазон). Так, если в ячейке памяти содержится число [math]00000022_[/math] , то прочитав его как int16 (два байта) мы получим число [math]0022_[/math] , прочитав один байт — число [math]22_[/math] . Однако, это же может считаться и недостатком, потому что провоцирует ошибки потери данных.

Обратно, считается что у little-endian, по сравнению с big-endian есть «неочевидность» значения байт памяти при отладке (последовательность байт (A1, B2, C3, D4) на самом деле значит [math]D4C3B2A1_[/math] , для big-endian эта последовательность (A1, B2, C3, D4) читалась бы «естественным» для арабской записи чисел образом: [math]A1B2C3D4_[/math] ). Наименее удобным в работе считается middle-endian формат записи; он сохранился только на старых платформах.

Для записи длинных чисел (чисел, длина которых существенно превышает разрядность машины) обычно предпочтительнее порядок слов в числе little-endian (поскольку арифметические операции над длинными числами производятся от младших разрядов к старшим). Порядок байт в слове — обычный для данной архитектуры.

Маркер последовательности байт

Для определения формата представления Юникода в начало текстового файла записывается сигнатура — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый маркером последовательности байт (англ. byte order mark (BOM)). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует.

Bom.png

Представление BOM в кодировках

Кодирование Представление (Шестнадцатеричное)
UTF-8 EF BB BF
UTF-16 (BE) FE FF
UTF-16 (LE) FF FE
UTF-32 (BE) 00 00 FE FF
UTF-32 (LE) FF FE 00 00

В кодировке UTF-8, наличие BOM не является существенным, поскольку, нет альтернативной последовательности байт. Когда BOM используется на страницах или редакторах для контента закодированного в UTF-8, иногда он может представить пробелы или короткие последовательности символов, имеющие странный вид (такие как ). Именно поэтому, при наличии выбора, для совместимости, как правило, лучше упустить BOM в UTF-8 контенте.Однако BOM могут еще встречаться в тексте закодированном в UTF-8, как побочный продукт перекодирования или потому, что он был добавлен редактором. В этом случае BOM часто называют подписью UTF-8.

Когда символ закодирован в UTF-16, его [math]2[/math] или [math]4[/math] байта можно упорядочить двумя разными способами (little-endian или big-endian). Изображение справа показывает это. Byte order mark указывает, какой порядок используется, так что приложения могут немедленно расшифровать контент. UTF-16 контент должен всегда начинатся с BOM.

BOM также используется для текста обозначенного как UTF-32. Аналогично UTF-16 существует два варианта четырёхбайтной кодировки — UTF-32BE и UTF-32LE. К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом

Проблемы Юникода

В Юникоде английское «a» и польское «a» — один и тот же символ. Точно так же одним символом (но отличающимся от «a» латинского) считаются русское «а» и сербское «а». Такой принцип кодирования не универсален; по-видимому, решения «на все случаи жизни» вообще не может существовать.

Примеры

Если записать строку ‘hello мир’ в файл exampleBOM, а затем сделать его hex-дамп, то можно убедиться в том, что разные символы кодируются разным количеством байт. Например, английские буквы,пробел, знаки препинания и пр. кодируются одним байтом, а русские буквы — двумя

Код на python

#!/usr/bin/env python #coding:utf-8 import codecs f = open('exampleBOM','w') b = u'hello мир' f.write(codecs.BOM_UTF8) f.write(b.encode('utf-8')) f.close()

hex-дамп файла exampleBOM

Символ BOM h e l l o Пробел м и р
Код в UNICODE EF BB BF 68 65 6C 6C 6F 20 D0 BC D0 B8 D1 80
Код в UTF-8 11101111 10111011 10111111 01101000 01100101 01101100 01101100 01101111 00100000 11010000 10111100 11010000 10111000 11010001 10000000

См. также

  • Представление целых чисел: прямой код, код со сдвигом, дополнительный код
  • Представление вещественных чисел

Источники информации

  • Wikipedia — таблица ASCII
  • Wikipedia — стандарт UNICODE
  • Wikipedia — Byte order mark
  • Wikipedia — Порядок байтов
  • Wikipedia — Юникод
  • Wikipedia — Windows-1251
  • Wikipedia — UTF-8
  • Wikipedia — UTF-16
  • Wikipedia — UTF-32

Сколько весит один символ в UTF-8

UTF-8, по сравнению с UTF-16, наибольший выигрыш в компактности даёт для текстов на латинице, поскольку латинские буквы без диакритических знаков, цифры и наиболее распространённые знаки препинания кодируются в UTF-8 лишь одним байтом, и коды этих символов соответствуют их кодам в ASCII.

  • UTF-8 кодирует символы переменной длины, от 1 до 4 байт на символ.
  • Один символ в информационном весе достаточного алфавита равен 1 байту.
  • Латинские буквы без диакритических знаков, цифры и распространённые знаки препинания кодируются UTF-8 лишь одним байтом, соответствующим кодам в ASCII.
  • Unicode использует два варианта кодирования: 8-битный и 16-битный. По умолчанию используется 16-битное кодирование, где каждый символ занимает 16 бит (два байта).
  • Символ ASCII расширяется до 8 бит, дополнительно добавляя один нулевой бит в качестве старшего бита.
  • Расширенная ASCII использует 2 байта в таблице Unicode. Так что 1 символ в компьютере занимает 1 или 2 байта.
  • Один символ кодировки UTF-16 представлен последовательностью двух байт или двух пар байт.
  • UTF-32 использует ровно 32 бита для кодирования любого символа, в отличие от UTF-8 и UTF-16, которые используют переменное число байтов для представления символов.
  1. Сколько весит один символ
  2. Сколько байт один символ UTF-8
  3. Чему равен 1 символ в Unicode
  4. Сколько весит 1 символ ASCII
  5. Какой объем занимает 1 символ
  6. Сколько байт требуется для 1 символ
  7. Сколько весит один символ в UTF 32
  8. Сколько весит символ в UTF-16
  9. Сколько бит будет весить один символ
  10. Чем UTF-8 отличается от Unicode
  11. Сколько весит один пробел
  12. Сколько весит символ Unicode
  13. Сколько весит один символ в КОИ-8
  14. Сколько бит на символ
  15. Сколько весит один символ двоичного кода
  16. Сколько бит в UTF-8
  17. Сколько весит символ текста
  18. Сколько бит отводится в Unicode
  19. Сколько байт занимает ASCII
  20. Сколько весит символ в Unicode 16
  21. Сколько весит символ в строке
  22. Чему равен символ

Сколько весит один символ

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

Сколько байт один символ UTF-8

UTF-8 — это кодировка символов переменной длины, что, в данном случае, означает длину от 1 до 4 байт на символ.

Чему равен 1 символ в Unicode

Unicode использует два варианта кодирования: 8-битный и 16-битный. По умолчанию используется 16-битное кодирование, то есть каждый символ занимает 16 бит (два байта); обычно его записывают как U+hhhh, где hhhh — шестнадцатеричный код символа.

Сколько весит 1 символ ASCII

Представление ASCII в ЭВМ

Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.

Какой объем занимает 1 символ

Расширенная ASCII позволяет использовать все 8 бит для кодирования. В таблице Unicode используется 2 байта, поэтому можно сказать, что 1 символ в компьютере занимает 1 или 2 байта.

Сколько байт требуется для 1 символ

Один символ кодировки UTF-16 представлен последовательностью двух байт или двух пар байт.

Сколько весит один символ в UTF 32

Universal Character Set) в информатике — один из способов кодирования символов Юникода, использующий для кодирования любого символа ровно 32 бита. Остальные кодировки, UTF-8 и UTF-16, используют для представления символов переменное число байтов.

Сколько весит символ в UTF-16

Один символ кодировки UTF-16 представлен последовательностью двух байтов или двух пар байтов.

Сколько бит будет весить один символ

Один символ алфавита «весит» 10 бит.

Чем UTF-8 отличается от Unicode

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

Сколько весит один пробел

Заметим, что пробел занимает 1 байт.

Сколько весит символ Unicode

В кодировке unicode на каждый символ отводится 2 байта.

Сколько весит один символ в КОИ-8

Определите количество символов в сообщении, если информационный

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

Каждый из этих символов представлен 7 битами данных. Для пересылки символов из расширенной таблицы ASCII (128-255) нужно использовать 8 битов.

Сколько весит один символ двоичного кода

К. 256 = 2^8, то вес 1 символа — 8 бит. Этот вес можно воспринимать как разрядность двоичного слова. То есть двоичный код каждого символа в компьютерном тексте занимает 1 байт памяти (или 8 бит).

Сколько бит в UTF-8

UTF-8 является лишь представлением Юникода в 8-битном виде. Символы с кодами меньше 128 представляются одним байтом, а так как в Юникоде они повторяют ASCII, то текст написанный только этими символами будет являться текстом в ASCII.

Сколько весит символ текста

Один символ компьютерного алфавита весит \(8\) бит или \(1\) байт.

Сколько бит отводится в Unicode

В заданной кодировке Unicode каждый символ алфавита занимает 2 байта = 16 бит памяти. Согласно условию заданное слово состоит из 24 символов, то оно будет занимать в памяти 24 * 2 байта = 48 байт. 48 байт = 384 бит (так как 1 байт = 8 бит). Ответ: 1) 384 бита.

Сколько байт занимает ASCII

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

Сколько весит символ в Unicode 16

Один символ кодировки UTF-16 представлен последовательностью двух байтов или двух пар байтов.

Сколько весит символ в строке

В современных системах 1 символ строки занимает 1 байт информации.

Чему равен символ

«≈» — «приблизительно равно». Используется при обозначении двух величин, разницей между которыми в данной задаче можно пренебречь. «≃» — используется для обозначения гомеоморфных пространств в топологии.

16.05.2023 Сколько весит один символ в UTF-8

UTF-8 — самая популярная кодировка символов в Интернете. Она используется для кодирования текста на любых языках, включая китайский, японский и корейский, а также для хранения и передачи данных. Кодировка представляет собой переменную длину символов, что означает, что каждый символ может занимать от 1 до 4 байт.

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

UTF-16 использует два байта для каждого символа, однако не включает всех символов Юникода, в отличие от UTF-8. UTF-32 использует 32 бита (четыре байта) для каждого символа, что делает его самым «затратным» с точки зрения хранения данных. Однако UTF-32 предоставляет полную поддержку всех символов Юникода.

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

Таким образом, количество байт, занимаемых одним символом в UTF-8, зависит от самого символа, а не от кодировки в целом, и может варьироваться от 1 до 4 байтов. В случае, если символ находится в диапазоне ASCII, то используется только 1 байт. В случае, когда символы не входят в диапазон ASCII, подразумевается использование двух или более байтов для их кодирования.

Utf 32 сколько байт

22 октября 2015 Задание для 7-9 классов

Участник: Юзефович Анна, СШ №140, Фрунзенское РУОСиТ г.Минска

На старте каждый участник получает 30 баллов

Задание 1

Что является лишним среди представленного?

Правильный ответ: В

Ответ участника: В

Промежуточный результат: 30 + 3 = 33

Задание 2

Один символ в кодировке UTF-32 занимает 4 байта памяти. Сколько байт памяти займёт следующее сообщение?

Мы весёлые ребята.

A) 20 байт Б) 40 байт В) 72 байта Г) 80 байт Д) 102 байта

Правильный ответ: Г

Ответ участника: В

Промежуточный результат: 33 — 1 = 32

Задание 3

По какому домену верхнего уровня мы можем определить, что Интернет-ресурс относится к Беларуси?

A) .bel Б) .бел В) .rb Г) .рб Д) .бг

Правильный ответ: Б

Ответ участника: А

Промежуточный результат: 32 — 1.25 = 30.75

Задание 4

Расположите указанные устройства хранения информации в порядке возрастания их максимальной ёмкости.

1. флешка 2. компакт-диск 3. дискета 4. жёсткий диск

A) 3, 2, 1, 4

Б) 1, 2, 3, 4

В) 2, 1, 3, 4

Г) 2, 3, 1, 4

Д) 4, 1, 2, 3

Правильный ответ: А

Ответ участника: А

Промежуточный результат: 30.75 + 3 = 33.75

Задание 5

Какое из устройств не является устройством вывода информации?

A) дигитайзер Б) монитор В) плоттер Г) наушники Д) принтер

Правильный ответ: А

Ответ участника: А

Промежуточный результат: 33.75 + 3 = 36.75

Задание 6

Полагая, что каждый символ кодируется одним байтом, определите, чему равен информационный объём следующего высказывания Уинстона Черчилля:

Кто владеет информацией, тот владеет миром

A) 37 байт Б) 512 бит В) 288 бит Г) 336 бит Д) 40 байт

Правильный ответ: Г

Ответ участника: А

Промежуточный результат: 36.75 — 1 = 35.75

Задание 7

Расширение имени файла указывает…

A) время последнего редактирования файла

Б) внешнее оформление файла

В) тип информации в файле

Г) размер файла

Д) местонахождение файла во внешней памяти

Правильный ответ: В

Ответ участника: В

Промежуточный результат: 35.75 + 3 = 38.75

Задание 8

A) 1 байт Б) 1 килобайт В) 1 мегабайт Г) 32 байта Д) 1 килобит

Правильный ответ: Г

Ответ участника: Г

Промежуточный результат: 38.75 + 3 = 41.75

Задание 9

Автомобиль Самоделкиных был зафиксирован на трассе фоторегистратором компьютерной системы «Автодория» в 12 часов 58 минут 50 секунд. Через 5 километров пути автомобиль Самоделкиных вновь был зафиксирован компьютерной системой в 13 часов 07 минут 10 секунд. С какой скоростью ехали Самоделкины по трассе?

A) 5 м/с Б) 10 м/с В) 15 м/с Г) 20 м/с Д) 25 м/с

Правильный ответ: Б

Ответ участника: В

Промежуточный результат: 41.75 — 0.75 = 41

Задание 10

Сколько клавиш на клавиатуре понадобится для ввода следующего текста?

Влад выждал два фола

A) 6 Б) 7 В) 8 Г) 9 Д) 10

Правильный ответ: Д

Ответ участника: Г

Промежуточный результат: 41 — 1.25 = 39.75

Задание 11

В древнем Египте применялась непозиционная система счисления. Символом «ρ» обозначалось число «сто» в привычной нам (десятичной) системе счисления, символом «∩» обозначалось число «десять», а символом «I» – число «один». Например, ρI∩II∩∩Iρ – это число 234. Дети собрали ρρI∩ρ плодов смоквы. Потом они съели ρII∩II∩∩III∩∩ плодов. Сколько плодов осталось?

A) ∩ρ∩II

Б) ρ∩ρIIIII

В) ∩ρ∩∩∩∩IIII

Г) ∩∩ρ∩∩III

Д) ρ∩∩∩∩III

Правильный ответ: В

Ответ участника: нет ответа

Промежуточный результат: 39.75

Задание 12

Какой штрихкод относится к товару, произведённому не в Беларуси?

Правильный ответ: А

Ответ участника: А

Промежуточный результат: 39.75 + 3 = 42.75

Задание 13

Как известно, у шахматной доски 8 столбцов и 8 строк (всего 64 клетки). Какое минимальное количество бит необходимо для кодирования координат одного шахматного поля?

A) 4 бита Б) 5 бит В) 6 бит Г) 7 бит Д) 8 бит

Правильный ответ: В

Ответ участника: Д

Промежуточный результат: 42.75 — 1.25 = 41.5

Задание 14

Числовые типы данных в языке Pascal могут быть…

A) натуральными и целыми

Б) натуральными и вещественными

В) целыми и вещественными

Г) целыми и рациональными

Д) рациональными и иррациональными

Правильный ответ: В

Ответ участника: Д

Промежуточный результат: 41.5 — 1 = 40.5

Задание 15

Скорость передачи данных через модем равна 512 Кбит/с. Маша решила заменить на своей страничке ВКОНТАКТЕ фотографию на более качественную. Новая фотография занимает 8 Мбайт. Сколько полных минут потребуется Маше, чтобы загрузить фотографию на страничку?

A) 1 Б) 2 В) 3 Г) 4 Д) 5

Правильный ответ: Б

Ответ участника: Б

Промежуточный результат: 40.5 + 4 = 44.5

Задание 16

Переменные х и у описаны в программе как целочисленные. Определите значение переменной х после выполнения следующего фрагмента программы на языке Pascal:

A) 199 Б) 919 В) 991 Г) 119 Д) 191

Правильный ответ: А

Ответ участника: А

Промежуточный результат: 44.5 + 4 = 48.5

Задание 17

Технология Plug and Play…

A) применяется при создании сети

Б) позволяет новым устройствам автоматически настраиваться под конфигурацию данного компьютера

В) используется вместо внешних устройств

Г) позволяет защитить компьютер от вирусов

Д) позволяет перемещать виртуальные объекты относительно друг друга

Правильный ответ: Б

Ответ участника: А

Промежуточный результат: 48.5 — 0.75 = 47.75

Задание 18

В процессе преобразования растрового графического файла количество цветов уменьшилось с 256 до 4. Во сколько раз уменьшился информационный объём файла?

A) в 2 раза

Б) в 4 раза

В) в 8 раз

Г) в 64 раза

Д) в 256 раз

Правильный ответ: Б

Ответ участника: Г

Промежуточный результат: 47.75 — 1.25 = 46.5

Задание 19

Расположите приведённые значения количества информации в порядке их возрастания:

1 – 8000000 бит

2 – 300000 байт

3 – 2000 МБ

4 – 1,5 ГБ

5 – 4000 кБ

A) 3, 4, 5, 1, 2

Б) 2, 3, 1, 4, 3

В) 2, 1, 5, 3, 4

Г) 4, 3, 5, 2, 1

Д) 2, 1, 5, 4, 3

Правильный ответ: Д

Ответ участника: Д

Промежуточный результат: 46.5 + 5 = 51.5

Задание 20

Какая единица используется для измерения чувствительности манипулятора «мышь»?

A) пиксель

Б) dpi (точек на дюйм)

В) bps (бит в секунду)

Г) мегагерц

Д) pts (пункт)

Правильный ответ: Б

Ответ участника: Г

Промежуточный результат: 51.5 — 1 = 50.5

Задание 21

Текст содержит 16 страниц, на каждой странице – 32 строки. В каждой строке – 64 символа. Информационный вес одного символа составляет 8 бит. Каков информационный вес всего текста?

A) 8 килобайт

Б) 16 килобайт

В) 128 килобайт

Г) 32 килобайта

Д) 64 килобайта

Правильный ответ: Г

Ответ участника: Г

Промежуточный результат: 50.5 + 4 = 54.5

Задание 22

Дан следующий фрагмент программы:

For i:=1 to 50 do B[i]:=i-10;

For i:=1 to 50 do С[i]:=B[i]*i;

Сколько элементов массива С в результате выполнения данного фрагмента будут иметь положительные значения?

A) 100 Б) 50 В) 40 Г) 10 Д) 0

Правильный ответ: В

Ответ участника: нет ответа

Промежуточный результат: 54.5

Задание 23

Не на всех планетах используется десятичная система счисления. Инопланетянин Нню расплатился в кафе одной купюрой, на которой было написано «1000 тиков», что означало 64 тика в десятичной системе счисления. Какая система счисления используется на родине Нню?

A) двоичная Б) троичная В) четверичная Г) восьмеричная Д) шестнадцатеричная

Правильный ответ: В

Ответ участника: А

Промежуточный результат: 54.5 — 1 = 53.5

Задание 24

Самоделкины Винтик и Шпунтик на 3D принтере распечатали деталь от суперсекретного робота. Сколько граммов пластика им потребовалось? Каждый кубик весит 1 грамм.

A) 3 грамма

Б) 5 граммов

В) 6 граммов

Г) 7 граммов

Д) 8 граммов

Правильный ответ: В

Ответ участника: Б

Промежуточный результат: 53.5 — 0.75 = 52.75

Задание 25

Даны две переменные a и b. Что происходит с ними в результате выполнения следующего фрагмента программы на языке Pascal?

A) значения переменных меняются местами

Б) значения переменных не меняются

В) значения переменных меняют знак на противоположный

Г) значения переменных меняются местами и меняют знак на противоположный

Д) значения переменных уменьшаются в два раза

Примечание:

В связи с тем, что среди предложенных вариантов ответов не оказалось правильного, вопрос не оценивался.

Вопрос не оценивался

Ответ участника: нет ответа

Промежуточный результат: 52.75

Задание 26

В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для логической операции «И» – символ «&». В таблице приведены запросы и количество найденных по ним страниц некоторой базы данных. Какое количество страниц будет найдено по запросу Тургенев&Чехов? Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.

A) 1000 Б) 2000 В) 3500 Г) 4500 Д) 5500

Правильный ответ: А

Ответ участника: Д

Промежуточный результат: 52.75 — 1.25 = 51.5

Задание 27

В велопробеге участвуют 30 спортсменов. Специальное устройство регистрирует прохождение каждым участником промежуточного финиша, записывая его номер с использованием минимально возможного количества бит, одинакового для каждого спортсмена. Какой объём памяти использован устройством, когда все спортсмены прошли промежуточный финиш?

A) 30 байт Б) 30 бит В) 150 байт Г) 5 бит Д) 150 бит

Правильный ответ: Д

Ответ участника: нет ответа

Промежуточный результат: 51.5

Задание 28

В данном фрагменте электронной таблицы в одну из ячеек диапазона A1:A5 была скопирована формула из ячейки B2. При копировании адреса ячеек в формуле автоматически изменились и числовое значение в этой ячейке стало равным 13. В какую ячейку была скопирована формула? Знак «$» обозначает абсолютную адресацию.

A) А1 Б) А2 В) А3 Г) А4 Д) А5

Правильный ответ: Б

Ответ участника: В

Промежуточный результат: 51.5 — 1.25 = 50.25

Задание 29

Набранный кириллическими знаками текст в кодировке UTF-16 занимает в 2 раза больше памяти компьютера по сравнению с этим же текстом, набранным в кодировке Windows-1251. Кириллический текст, набранный в кодировке UTF-32, занимает в 4 раза больше памяти, чем этот же текст в кодировке Windows-1251. Во сколько раз изменится размер файла, набранного кириллическими знаками текста в кодировке UTF-8 по сравнению с этим же текстом, набранным в кодировке Windows-1251?

A) уменьшится в 4 раза

Б) увеличится в 4 раза

В) увеличится до двух раз

Г) останется как есть

Д) уменьшится до двух раз

Правильный ответ: В

Ответ участника: нет ответа

Промежуточный результат: 50.25

Задание 30

Между населёнными пунктами А, В, С, D, Е, F, G построены дороги, протяжённость которых приведена в таблице. Отсутствие числа в таблице означает, что прямой дороги между пунктами нет. Определите длину кратчайшего пути между пунктами А и G при условии, что передвигаться можно только по построенным дорогам.

A) 47 Б) 29 В) 17 Г) 22 Д) 23

Правильный ответ: Г

Ответ участника: Б

Промежуточный результат: 50.25 — 1.25 = 49

Окончательный результат: 49

Место в Беларуси: 1723

Место в области: 353

Место в районе: 75

Место в школе: 7

Участник получает свидетельство и «приз для всех».

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

Преобразует входную строку в шестнадцатеричный, двоичный или десятичный дамп в кодировке UTF-8 и обратно из дампа в строку.

Калькулятор ниже можно использовать для преобразования строки в шестнадцатеричный / двоичный или десятичный дамп в кодировке utf-8. Калькулятор определяет количество символов в строке, число символов занимающих один, два, три или четыре байта в кодировке utf8, а также общее число байт в тексте, закодированном utf8.
Немного информации о представлении строк в Юникоде и uft-8 можно найти под калькуляторами.

Строка в UTF-8

Входной текст
Выводить как
Число разрядов в строке
Разделять строку
Разделитель
Рассчитать
Строка в UTF-8
Количество символов
Количество байт
Количество символов длины 1,2,3,4 байта
Ссылка Сохранить Виджет

Следующий калькулятор выполняет обратное преобразование из строкового дампа строки в кодировке utf-8 в строку. Основание представления закодированной строки (16, 10 или 2 ) калькулятор может определить автоматически. В десятичном дампе обязательно разбиение строки на байты. В качестве разделителя можно использовать любой символ, например пробел.

UTF-8 в строку

Формат данных
Рассчитать
Ссылка Сохранить Виджет

Предыстория кодирования символов в строке

В старые добрые времена, когда компьютеры были ламповыми смартфонов не было, а объем памяти персональных компьютеров порой не превышал и одного мегабайта, для кодирования одного символа в строке хватало всего лишь одного байта. Первую «половину» байта занимали цифры, символы латинского алфавита, знаки пунктуации и другие полезные символы, все вместе известные как таблица ASCII. Вторую половину разработчики захватили для кодирования символов национальных языков. Захват происходил сразу с разных концов, независимыми специалистами, что привело к существованию нескольких различных кодировок даже для одного и того же языка (например для кириллицы существуют такие одно-байтовые кодировки: КОИ-8, CP866, ISO 8859-5, Windows-1251). Одно-байтовая запись любого символа была простой и очень удобной для разработчиков программ. Однако наличие различных кодировок порождало постоянные проблемы у пользователей: для корректного отображения текста нужно было знать в какой он кодировке , для каждой кодировки нужно иметь отдельные шрифты. Кроме того, выяснилось, что в мире существуют языки, где число символов заметно больше, чем 256, соответственно в один байт все символы этих языков уже не могли поместиться.

Юникод

Для решения вышеописанных проблем в 1991-м году придумали стандарт, описывающий универсальный набор всех символов — Юникод. В первой версии Юникода, насчитывалось 7161 символов 1 . Для кодирования этого числа символов достаточно 2-х байтов, что привело к расцвету 2-х байтовой кодировки UTF-16 в операционных системах и некоторых языках программирования. Оперировать двух-байтовыми символами в программах оказалось ни чуть не сложнее, чем одно-байтовыми. Однако радость разработчиков продолжалась всего 10 лет, версия 3.1 стандарта Unicode насчитывает в 13 раз больше символов, чем первая. Общее число символов достигло 94 205 и для их кодирования уже мало двух байтов. К моменту написания этой статьи последний стандарт Юникода 13.0 содержит 143 859 символов, и работы по добавлению новых символов не прекращаются. Простейшее решение проблемы — снова удвоить число байт для представления символов. Для этого имеется кодировка UTF-32, позволяющая закодировать 2 147 483 648 позиций.

UTF-8

Однако, всему есть предел. Расходовать 4 байта на один символ показалось слишком расточительным. Поэтому UTF-32 не стала столь популярной, как UTF-16. Вместо этого, сейчас наиболее популярна кодировка с переменной длиной символа UTF-8. UTF-8 появилась в 1992-м году и ранее использовалась преимущественно в unix-системах. Большое достоинство ее заключается в том, что текст, набранный латиницей, полностью совместим с 7-битной кодировкой ASCII, применяемой с 1963-года.
При помощи кодировки UTF-8 можно закодировать 2 097 152 символов, что почти в 15 раз больше текущего объема символов, описанных в Юникоде.
Для определения количества байт, требуемых для кодировки символа, используется от одного до 5-и старших бит 2 первого байта:

  • 0 — однобайтовый символ, соответствующий таблице ASCII, например Символ доллара
  • 110 — двух-байтовый символ, например Символ фунта
  • 1110 — трех-байтовый символ, например Символ евро
  • 11110 — четырех-байтовый символ, например Смайлик

Каждый последующий байт содержит 2-битовый маркер дополнительного байта: 10. Для получения позиции символа в Юникоде вспомогательные биты просто удаляются, оставшаяся битовая последовательность будет соответствовать номеру символа.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *