Відмова - я не теоретик інформації, а лише мавпа з кодом, яка працює в основному на C і C ++ (і, таким чином, з типами фіксованої ширини), і моя відповідь буде з цієї конкретної точки зору.
В середньому 3,2 біта представляють одну десяткову цифру - від 0 до 7 можуть бути представлені в 3 біти, тоді як 8 і 9 вимагають 4. (8*3 + 2*4)/10 == 3.21 .
Це менш корисно, ніж це звучить. З одного боку, у вас, очевидно, немає дрібних дробів. Для іншого, якщо ви використовуєте нативні цілі типи (тобто не BCD або BigInt), ви не зберігаєте значення як послідовність десяткових цифр (або їх двійкові еквіваленти). 8-бітний тип може зберігати деякі значення, що містять до 3-х десяткових цифр, але ви не можете представити всі тризначні цифри у 8 бітах - діапазон є [0..255]. Ви не можете представляти значення [256..999]лише у 8 біт.
Коли ми говоримо про значення , ми використовуватимемо десяткові, якщо програма очікує цього (наприклад, додаток для цифрового банкінгу). Коли ми говоримо про біти , ми зазвичай використовуємо шістнадцятковий або двійковий (я майже ніколи не використовую восьмеричний, оскільки я працюю в системах, які використовують 8-бітні байти та 32-бітні слова, які не поділяються на 3).
Значення, виражені в десяткових знаках, не відображають чітко бінарні послідовності. Візьміть десяткове значення 255. Двійкові еквіваленти кожної цифри будуть 010, 101, 101. І все ж бінарне подання значення 255є 11111111. Просто немає відповідності жодної з десяткових цифр у значенні двійковій послідовності. Але існує пряма відповідність з шістнадцятковими цифрами - F == 1111так що це значення може бути представлене як FFу шістнадцятковій.
Якщо ви працюєте в системі, де 9-бітові байти і 36-бітні слова є нормою, то восьмерика має більше сенсу, оскільки біти групуються природним чином у трійки.
- Насправді середнє значення на одну цифру менше, оскільки для 0 і 1 потрібен лише один біт, тоді як для 2 і 3 потрібні лише 2 біти. Але на практиці ми вважаємо від 0 до 7 взяти 3 біти. Просто полегшує життя багатьма способами.
d, це охоплює одну десяткову цифру, діапазон0..9.3*dбіти означають три десяткових цифри і дозволяють представляти цілі числа з діапазону0..999. Цілих десять біт (думаю, бінарні зараз) дають діапазон0..1023. 999 досить близький до 1023, але трохи менше. Таким чином, ви можете очікувати, що цеdмає бути менше 10/3.