Зачем использовать массив char вместо int для наборов битов в C ++ - PullRequest
2 голосов
/ 13 ноября 2010

Для проекта, над которым я работаю, мне нужно создать собственную реализацию для набора битов. Я взглянул на библиотеку STL, чтобы увидеть, как они справляются с этим, и посмотрел несколько других вещей в Интернете. Кажется, это довольно стандартно использовать массив символов. Есть ли причина, по которой все используют массивы символов вместо целочисленных типов?

Ответы [ 2 ]

4 голосов
/ 13 ноября 2010

Просто потому, что char в C ++ - это один байт (или, по крайней мере, согласно стандарту C ++ он по размеру меньше или равен int или short), тогда как размер int обычно больше байта.(Обычно это 32-битные или 4-байтовые файлы на большинстве машин в наши дни.) Поскольку один байт - это наименьшая адресуемая единица данных, которую может обработать компьютер, естественно использовать массивы char s при работе с отдельными битами,Например, если вы используете int, то вы потратите значительное пространство на любое количество битов, не кратное sizeof(int), но с байтовым массивом вы потеряете наименьшее возможное количество места.

1 голос
/ 13 ноября 2010

Char - это (обычно) наименьшая единица бит, которой может манипулировать микропроцессор.Если вы создаете объект, который работает с произвольным числом битов, имеет смысл использовать массив наименьшей единицы.Таким образом, вы всегда будете использовать наименьшее количество возможных единиц.

Если вам нужен набор битов не произвольного размера, а процессор имеет достаточно большой собственный тип, чтобы его содержать, используйте N-битный тип.Это будет более эффективно, чем массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...