бинарный — почему C ++ распадается на кусочки?

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

-5

Решение

Ближайший грызет к тому, что число в наговор формат имеет одну цифру на клочок … причина, по которой шестнадцатеричный код в коде видится совсем немного, состоит в том, что он позволяет точно представить общую 8-битную ширину байтов только с двумя шестнадцатеричными цифрами, что является достаточно кратким и не слишком людям трудно привыкнуть. Достаточно просто мысленно преобразовать обратно в двоичный файл, не теряя при этом, какие цифры вы смотрите, как вы можете с 32-битным или 64-битным значением в двоичном формате.

  • Пример: при просмотре 0x30000 ясно, что 4 * 4 = 16 младших битов справа равны 0, поэтому установлены 17-й и 18-й биты. Это проще и менее подвержено ошибкам, чем интерпретация 0b110000000000000000 или (десятичная) 1114112.

C ++ битовые поля позволяют структурам упаковываться в произвольные ширины и позиции, так что вы можете создавать «клочки», если хотите, но в вероятном случае, когда ЦПУ не хватает какой-либо специальной поддержки для клевов, или оптимизатор C ++ считает преимущества от таких инструкций настолько редкими, что не беспокойтесь об их использовании, скомпилированный код C ++ будет сдвигать биты и побитовые операции OR и AND в / из адресуемых процессором единиц памяти (байтов или слов), которые их содержат, так же, как это, вероятно, придется делать для других поля необычной ширины.

Несколько процессоров поддержали Двоично-десятичный числовые представления, в которых каждая десятичная цифра занимает кусочек, но это не поддерживается стандартом C ++.

1

Другие решения

Нет гарантии, что информация хранится в последовательностях по четыре бита. Скорее, он хранится в последовательностях по 8 бит (байт),
но это полностью зависит от вашей архитектуры и стоимости CHAR_BIT, sizeof может возвращать только размер ваших типов данных в байтах, и sizeof(char) гарантированно вернет 1. Стандарт не предписывает, что байт равен 8 битам.

3

Там нет механизма в C ++, который разбивает информацию хранится в откусывание.

То, что вы чаще всего видите с реализациями, это октет, а не клев. Октет представляет собой байт которая является наименьшей единицей памяти, которая может быть адресована в c ++.

Сколько битов используется для представления байт (=> unsigned char) в языке c ++ фактически определяется реализацией.

1
По вопросам рекламы [email protected]