Перейти к содержимому

Сколько символов в 2 байтах

  • автор:

Сколько чисел в 2 байтах?

2) Я правильно понимаю что в чистый байт(без инструкций) можно впихнуть скажем 256 чисел? (типо 111111111111111. ) Вопрос задан более трёх лет назад; 23329 .

Сколько чисел в одном байте?

В современных вычислительных системах байт состоит из 8 бит и, соответственно, может принимать одно из 256 (от 0 до 255) различных значений (состояний, кодов).

Сколько символов можно записать в 1 байт?

Ответ или решение1. Если один символ занимает количество информации, численностью 1 бит, а так как в одном байте — восемь бит. То с помощью одного байта мы можем написать 8 символов.

Чему равен один символ в байтах?

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

Сколько чисел в 2 байтах? Ответы пользователей

без знака 256, а со знаком по логике если 1 бит на знак, то 128, хотя все равно 256 получается в сумме. . Так что 256!!

Из этого можно сделать вывод, что команда mov ah,9 занимает 2 байта: 102h . код в ASCII (ниже рассмотрим), соответствующий шестнадцатеричным числам с .

Получается, что у байта 256 значений (всегда считается вместе с нулевым). биты dec-цифры | биты dec-цифры 00000001 = 1 | 00001011 = 11 00000010 = 2 !

Также выдается какой объем памяти требуется для хранения этого числа в памяти компьютера (число байт). Кроме этого калькулятор определяет число разрядов для .

Для чисел, которые занимают 2 байта, последовательность действий будет такая . (7:3=2,33(3)), нужно проводить столько операций, сколько необходимо иметь .

Представление целых и вещественных чисел в памяти компьютера. . отводится 2 байта (16 бит); типа LongInt — в диапазоне от —2 31 до 2 31 — 1 и размещаются в .

Машинные слова в Си. Базовые типы данных целых чисел реализованы в машинных словах . for (i=i0=i1=0;i n — 1. Определим диапазон чисел, которые могут храниться в оперативной памяти . диапазон представления целых чисел со знаком (отводится 2 байта памяти) в .

Размер не гарантируется. ushort: Беззнаковое целое число размером 2 байта. . Форматы данных для представления нецелых чисел будем классифицировать по .

Юникод и байты

Про Юникод написано много, но мне кажется, что это одна из тем, про которую «чисто ради интереса» никто читать не полезет. Поэтому я решил поделиться здесь одной штукой, которая, как я в разговорах со многими замечал, не всем известна. Речь о том, «сколько байт занимает юникод».

Старые кодировки (например WINDOWS-1251, KOI8-R) совершенно четко определяют, какие конкретные значения одного байта используются для кодирования одного символа (человеческого или служебного). И отсюда вытекает их известная проблема с тем, что они не могут кодировать больше 256 символов. Для того, чтобы с этой проблемой бороться универсально, был придуман Юникод.

Вот дальше идет то самое частое, потому что очень логичное, заблуждение о том, что Юникод — это кодировка, где для каждого символа отводится 2 байта, а значит она может кодировать 65536 символов. Больше того, хоть я и не смотрел специально, кажется именно так она и была задумана в самом начале. Но сейчас все совсем не так.

Довольно быстро возникла необходимость кодировать гораздо больше, чем 65536 символов (чуть больше миллиона сейчас) и, что главное, появилась необходимость кодировать их по-разному. Поэтому в отличие от старых кодировок стандарт Юникода полностью разделяет две вещи:

  • номера, присваиваемые символам
  • какими байтами эти номера представляются

Номера, присваиваемые символам, полностью абстрактны. Это не байты, не двубайты, а просто числа. Например символу «Заглавная кириллическая буква А» назначен номер 1040, он же — 410 в шестнадцатеричной системе. И формально в Юникоде это принято записывать как U+0410.

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

Есть несколько форм кодирования, которые официально входят в стандарт.

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

UTF-8 совместим со старым софтом и протоколами, потому что в такой строке не может встретиться байт 0x00 , который бы ее обрывал. Также в большинстве текстов файлов конфигураций и исходников программ, которые традиционно состоят в основном из ASCII, он не занимает сильно больше места, чем ASCII — тот же байт на символ. Еще один плюс — у него нет разных вариантов для разных платформ, он везде одинаковый.

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

UTF-16 (или, что почти одно и то же — UCS-2)

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

Кстати, UCS-2 — это как раз UTF-16 без этих дополнительных символов, то есть строго символ = 2 байта.

На практике редкие символы действительно редки (часто встречались с древнегреческой музыкальной грамотой?), поэтому во многих системах для внутреннего представления символов используется именно UTF-16, например в NTFS для имен файлов, в Delphi для WideString’ов, и Java, насколько я знаю, тоже внутри вся в UTF-16 работает со строками.

Однако двухбайтовость делает затруднительным использование UTF-16 для обмена данными из-за двух проблем: наличия нулевых байтов в строке и разночтения порядка следования старшего и младшего байтов на разных платформах.

UTF-32 (или, что почти одно и то же — UCS-4)

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

Отличия от UCS-4 совсем умозрительные и непрактические.

Минус у этого представления, помимо плохой переносимости, как у UTF-16, еще и в том, что UTF-32 попросту занимает еще больше места.

Другие формы

Помимо UTF’ов, внесенных в стандарт Юникода, существует еще несколько знакомых многим способов представления юникодных номеров.

В первую очередь это XML и HTML со своими А и А . Такое представление, хоть и занимает места еще больше, чем UTF-32 (по 7 байт в двух предыдущих примерах), зато обладает несомненным плюсом в том смысле, что их можно использовать, даже если вы храните сам файл в старой однобайтовой кодировке. А вот если у вас файл и так хранится в одном из юникодных представлений (UTF-8 чаще всего), то в него можно вставлять все стрелочки и кавычечки прямо в UTF-8, которые можно либо взять из charmap’а, либо сам редактор может уметь обрабатывать всякие мудреные комбинации клавиш для этого. Оно и выглядит более читаемо при этом.

Ну и еще напоследок — представление в Javascript. Суть та же, что и у (X|HT)ML’а, только запись другая: \u0410 , \u0160 .

То, что я тут написал — довольно упрощенное прдставление, где я не касался всяких форм нормализации, символов, которые не символы, и прочих «высших и низших суррогатов». Хотя вчера успел совершенно замучить жену цитатами из стандарта Юникода, который читал, чтобы уточнить пару вещей для статьи. Штука, конечно, интересная, но удивительно запутанная. Если кого это все заинтересует, то лучше всего начать со статьи про Юникод в русской Wikipedia (очень хорошая).

Комментарии: 9

Есть ещё UTF-7, а у UTF-8 есть интересная особенность — всегда можно определить находимся ли мы посередине символа или в его начале.

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

Спасибо, наконец-то я получил толковое объяснение почему так много кодировок называющих себя Юникодом. ))

Замечательный обзор, спасибо.
Зная, что Вы, Иван, знаете Python не понаслышке, хочу спросить о следующем:

В первую очередь это XML и HTML со своими А ;

Есть ли библиотечка, которая переводит все эти
привет питон
в «нормальный» вид, а вот как возник вопрос:

А отличный рассказ про разные UTF есть тут

Pak поднял мучающий меня вопрос:) Как в Python перевести HTML и (особенно мучает:)) Javascript-коды в UTF8-строки?

Честно говоря, никогда не приходилось отдельно коды переводить. Если это HTML или XML, то он парсится парсерами (модуль htmllib и семейство модулей xml.* соответственно). А чтобы парсить javascript’овые строки есть, например, simplejson (с недавних пор включается в django.utils.simplejson, кстати). Делается примерно так:

Возвратит питоновскую юникодную строку.

Почему бы на ru.wikipedia.org Вам не добавить этот текст?

Мне показалось, что там тема проработана глубже, поэтому моя статья и не добавит ничего.

Интересная статья. Как раз столкнулся с проблемой — неизвестная четырехбайтовая кодировка. Первые 2 байта C3 90 или C3 91 (шестнадцатиричные), потом еще 2 байта (очевидно конкретно уточняющие символ). В общем выглядит примерно так — C3 90 C2 BA (один символ).

Ни одна из имеющихся программ-перекодировщиков не смогла переварить такое. Не подскажите, что это может быть?

Сколько символов можно закодировать с помощью 2 байтов

Два байта составляют 16 бит. В каждом бите может быть два возможных значения (0 или 1). Поэтому, чтобы найти количество символов, которые можно закодировать с помощью 2 байтов, нужно узнать сколько различных комбинаций возможно с 16 битами.

Количество различных комбинаций можно вычислить по формуле:

где «n» — количество битов. В нашем случае n=16.

Таким образом, с помощью 2 байтов (16 бит) можно закодировать 65,536 различных символов.

javascript — Сколько символов может содержать 2 байта?

Нет никакого смысла в том, что байт (или два байта) является, если вы не знаете encoding используется, что каждое из 256 (или 65536) значений должно быть / среднее.

Если вы говорите о Char Вы не можете сказать, что это один, два или пятьдесят символов …

ASCII encoding содержит 128 различных символов (95 символов могут отображаться, в то время как остальные являются контрольными символами) в диапазоне от 0 до 127 (значение байта, выраженное в десятичном литерале)

Unicode encoding (v7) — общая кодировка. У вас есть UTF-8, UTF-16 Little Endian или Big Endian и UTF-32 Little Endian или Big Endian.

  • UTF-8 требует 1, 2, 3 или 4 байта для представления одного символа.
  • UTF-16 — кодировка символов фиксированного размера: каждому символу требуется 2 байта.
  • UTF-32 также является кодировкой символов фиксированного размера, для которой требуется 4 байта на символ.

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

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

Но, опять же, Байт — это Байт, а не Символ!

Давайте представим (новую) пользовательскую кодировку с определенным парсером и форматером, где каждый бит [0 or 1] определить выбор одного слова / текста / строки, хранящейся в словаре, а выбор следующих слов / текста / строки зависит от предыдущего выбранного слова (предыдущее значение бита)

Цель такого типа кодирования несколько бесполезна, но эй! Поскольку вы использовали словарь, вы можете подтвердить один байт Можно представляют ровно 510 символов данных (или даже больше) из-за использования этой конкретной кодировки / декодирования .

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

РЕДАКТИРОВАТЬ !

И хотя это выходит за рамки вопроса, compression является еще более злым (и, как правило, использует словарь;)) Но сжатие эффективно только от определенный количество байтов ….

Другие решения

Символ является графическим представлением концепции и может занимать произвольное количество байтов. Например, символ «S» (заглавная буква «S») занимает 1 байт, тогда как символ �� (целующиеся губы) занимает 3 байта.

Я думаю, что ваш ответ неверен. байт 1 символ. двоичный символ — это серия из 8 включений или выключений или 0 или 1 с. один из них — бит, и 8 бит составляют байт, поэтому 1 байт — один символ. Таким образом, 2 байта содержат два символа.

Это зависит от формата строки. 1 байт на символ в ASCII и 2 байта на символ в Unicode , поэтому 2 байта могут содержать только один символ Unicode или 2 символа ASCII.

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

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