Отказ от ответственности - я не теоретик информации, а просто обезьяна кода, которая работает в основном на C и C++ (и, следовательно, с типами фиксированной ширины), и мой ответ будет с этой конкретной точки зрения.
Для представления одной десятичной цифры требуется в среднем 3,2 бита - от 0 до 7 можно представить в 3 битах, тогда как для 8 и 9 требуется 4.  (8*3 + 2*4)/10 == 3.2 1.
Это менее полезно, чем кажется.  Во-первых, у вас явно не хватает долей.  С другой стороны, если вы используете собственные целочисленные типы (т. Е. Не BCD или BigInt), вы не сохраняете значения в виде последовательности десятичных цифр (или их двоичных эквивалентов).  8-битный тип может хранить некоторые значения, которые принимают до 3 десятичных цифр, но вы не можете представить все 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 бита.  Просто облегчает жизнь во многих отношениях.