Что означает «старший бит» или «старший бит» в байте?

Я по профессии разработчик PHP.

Рассмотрим следующий текст относительно UTF-8, стандарт кодирования:

UTF-8 — кодирование переменной длины. Если персонаж может быть
представленный с использованием одного байта, UTF-8 закодирует его одним
байт. Если ему требуется два байта, он будет использовать два байта и так далее. Это
разработал способы использования старшие биты в байте сигнализировать, как
много байтов, из которых состоит символ. Это может сэкономить место, но может также
пустое место, если эти сигнальные биты необходимо использовать часто.

Также рассмотрим ниже UTF-8, а также UTF-16 Пример кодирования:

あ UTF-8 Кодированная строка байтов 11100011 10000001 10000010

あ UTF-16 Кодированная строка байтов 00110000 01000010

Кто-нибудь, пожалуйста, объясните мне значение термина старшие биты (или старший бит) в байте в контексте стандарта кодирования UTF-8 и PHP.

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

Как это явление старшие биты (или старший бит) в байте может сэкономить место, но может также потратить пространство, если эти биты сигнала нужно часто использовать?

Пожалуйста, дайте свой ответ и объяснения с помощью примера кодирования, который я привел в вопросе.

0

Решение

Этот ответ просто отвечает на ваши (маленькие) вопросы, но я действительно предлагаю вам прочитать Абсолютный минимум Каждый разработчик программного обеспечения должен абсолютно точно знать о юникоде и наборах символов (никаких оправданий!) чтобы получить более широкую картину.
Ему 15 лет, но основы не меняются, и это дает хорошее объяснение истории, технических особенностей и истории этого. Это, безусловно, помогает объяснить некоторые проблемы, которые вы будут встречаются на практике, когда занимаются веб-разработкой с использованием юникода, и это поможет вам в создании хороших тестовых случаев, чтобы ваше программное обеспечение не ломалось внезапно, когда его начинают использовать французы или японцы. В конце концов, если вы начнете использовать юникод, вы должны сделать это правильно, от базы данных до заголовков кодировки.

Это сказал …

Высокие биты

Старшие биты — это биты, обычно записываемые с левой стороны, которые представляют наибольшую часть значения. Так же, как когда вы пишете 1857824, 1 является самой высокой цифрой (представляющей миллион). Для двоичного кода это то же самое, за исключением того, что эти числа всегда будут только 0 или 1.

Сигнальные биты

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

Подгонка символов в 2 или 3 байта

Если у вас есть только текст на английском языке, каждый символ будет по-прежнему помещаться в один байт в UTF-8, а бит сигнала будет указывать, что второго символа нет. Если вы смешаете это время от времени с латинским символом с диакритическими знаками, некоторые символы будут 2 байта, но многие все равно будут одним, поэтому он все еще более компактен, чем UTF-16, который всегда кратен 2 как количество байтов.

Это означает, что UTF-16 требует меньше флагов (1 бит в 16 вместо 1 в 8), чтобы указать, будет ли больше групп. Таким образом, UTF-16 имеет больше места для данных персонажа. Это приводит к интересному эффекту для вашего «Japansese a», который также умещается в 2 байта в UTF-16, тогда как в UTF-8 вам нужно 3 байта, потому что используется слишком много сигнальных битов, и нет места для размещения Японский в 2 байта вместе со всеми другими наборами символов.

Это означает, что если вы действительно беспокоитесь о пространстве, вы можете подумать о сохранении и отправке преимущественно японских текстов в UTF-16, в то же время сохраняя и отправляя преимущественно латинские тексты (включая английский) в UTF-8. На самом деле, я бы не стал сильно беспокоиться об этом и избавил бы себя от множества неприятностей, выбрав один и придерживаясь его.

2

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

Других решений пока нет …

По вопросам рекламы [email protected]