Скільки бітів або байтів припадає на "символ"?
Скільки бітів або байтів припадає на "символ"?
Відповіді:
Це залежить від того, який символ і в якому кодуванні він знаходиться:
Символ ASCII у 8-розрядному кодуванні ASCII становить 8 бітів (1 байт), хоча він може поміститися в 7 бітів.
Символ ISO-8895-1 у кодуванні ISO-8859-1 становить 8 бітів (1 байт).
Символ Unicode у кодуванні UTF-8 становить від 8 бітів (1 байт) до 32 бітів (4 байти).
Символ Unicode в кодуванні UTF-16 становить від 16 (2 байти) до 32 біт (4 байти), хоча більшість загальних символів займають 16 бітів. Це кодування, яке використовується Windows внутрішньо.
Символ Unicode у кодуванні UTF-32 завжди складає 32 біти (4 байти).
Символ ASCII в UTF-8 становить 8 біт (1 байт), а в UTF-16 - 16 бітів.
Додаткові (не ASCII) символи в ISO-8895-1 (0xA0-0xFF) займуть 16 бітів в UTF-8 та UTF-16.
Це означало б, що в розряді може бути від 0,03125 до 0,125 символів.
У байті 8 бітів (як правило, у Windows).
Однак якщо ви маєте справу з символами, це буде залежати від кодування / кодування. Символ Unicode може складати 2 або 4 байти, тож це буде 16 або 32 біти, тоді як Windows-1252, який іноді неправильно називається ANSI, становить лише 1 байт, тобто 8 біт.
В азіатській версії Windows та деяких інших система вся система працює у двобайтовому режимі, тому символ складає 16 біт.
ВИДАЛЕНО
Відповідно до коментаря Маттео, усі сучасні версії Windows використовують 16-бітові дані для кожного символу.
wchar_t
), а не лише азіатські, і так слід робити всі новіші програми. (Натомість у Linux це зовсім інша історія, оскільки зазвичай UTF-8 використовується у всій системі)
char
, тоді як рядки Unicode зберігаються за wchar_t
типом. До речі, коли NT запускався, цього wchar_t
було достатньо, щоб уникнути сурогатних пар, але тепер, коли це UTF-16, навіть wchar_t
рядки можуть мати символи змінної довжини, тому в Windows символ Unicode може займати від 2 до 4 байт (1 або 2 wchar_t
).
:)