0

Читаю сейчас на хабре эту статью. Там говорится следующее:

char — это всегда ровно один байт и во всех стандартах C и C++ sizeof (char) == 1 (но при этом стандарты не гарантируют, что в байте содержится именно 8 бит :))

Я слышал об этом и раньше, но всегда не мог понять, в чем смысл того, что в байте может быть не 8 бит? Наверное, это где-то действительно есть, но зачем это нужно? В чем необходимость, что в байте может быть 7 или 9 (или сколько там еще) бит, и не создает ли это больше проблем, чем пользы?

Andy_Reed
  • 907

1 Answers1

5

Приведённая цитата - скорее, историческая ремарка, чем реальное предупреждение. В старых (очень старых) архитектурах процессоров использовались и 7-битные, и 6-битные, и даже 32-битные байты. Ранняя версия ASCII была семибитной, также существовала семибитная версия КОИ. Но со временем стандартом де-факто стал восьмибитный байт, так как процессорам было проще оперировать величинами, чей размер выражался степенью двойки (8 = 2^3). Позже размер байта в 8 бит был закреплён стандартом IEC 80000-13.

fori1ton
  • 23,403
  • Нет, это как раз понятно, что раньше были такие архитектуры. Но вопрос в том, в чем был смысл такого? Для чего то же это делали. – Andy_Reed Feb 20 '15 at 08:48
  • 4
    ответ прост. Так было удобно. Просто победил 8битный байт. Он ничем не лучше и не хуже 16 битного байта или 36 битного (и такой был).

    Сейчас, когда практически у каждого есть компьютер и не один, сложно поверить, что ещё лет 50-60 назад компьютеры были "штучные", под заказ. Захотел заказчик 155 бит в байте - сделают.

    – KoVadim Feb 20 '15 at 08:53
  • 4
    Ну и по поводу семи- и шестибитных байтов: когда у вас блок памяти объёмом в килобайт представляет собой тяжеленный ящик, набитый ферритами, вы будете сознательно экономить каждый бит, игнорируя удобство. – fori1ton Feb 20 '15 at 08:55
  • @fori1ton @KoVadim спасибо! – Andy_Reed Feb 20 '15 at 10:00
  • 4
    Чет ностальжи нахлынуло: вспомнил времена, когда 8 кб оперативки были верхом совершенства, а у меня был личный винчестер аж на 2.5 мегабайта размером с приличный портфель и я таскал его домой, чтобы никакая сука не могла его стырить. Приезжал на работу ставил его в накопитель, включал, расскручивал выкуривал сигарету и только потом монтировал (иначе mount проваливался, поскольку винт не успевал раскрутиться) – Barmaley Feb 20 '15 at 11:30
  • Ага, это 23-тье приближается. – avp Feb 20 '15 at 11:34