Если вы имеете в виду «насколько велико целое число», тогда ответом будет sizeof(int)
.
Если вы имеете в виду «как маленький тип я могу использовать для хранения значений этой величины», то это немного большесложный.Если у вас уже есть значение в виде целого числа, то, вероятно, оно умещается в 4, 3, 2 или 1 байт.Для значений без знака, если это 16777216 или более, вам нужно 4 байта, 65536-16777216 требуется 3 байта, 256-65535 нужно 2, а 0-255 помещается в 1 байт.Формула для этого исходит из того факта, что каждый байт может содержать 8 битов, а каждый бит содержит 2 цифры, поэтому 1 байт содержит 2 ^ 8 значений, т.е.256 (но начиная с 0, поэтому 0-255).Таким образом, 2 байта содержат 2 ^ 16 значений, т.е.65536 и т. Д.
Вы можете обобщить это за пределы обычных 4 байтов, используемых для типичного типа int, если хотите.Если вам нужно разместить целые числа со знаком, а также без знака, имейте в виду, что 1 бит эффективно используется для хранения положительных или отрицательных значений, поэтому величина равна 1 степени на 2 меньше.
Вы можете вычислитьколичество бит, которое вам нужно итеративно из целого числа, разделив его на два и отбросив остаток.Каждое деление, которое вы можете сделать и у которого все еще есть ненулевое значение, означает, что вы используете еще один бит данных - и каждые 8 бит, которые вы используете, означают 1 байт.
Быстрый способ вычисления этого состоит в том, чтобыиспользуйте функцию сдвига вправо и сравните результат с нулем.
int value = 23534; // or whatever
int bits = 0;
while (value)
{
value >> 1;
++bits;
}
std::cout << "Bits used = " << bits << std::endl;
std::cout << "Bytes used = " << (bits / 8) + 1 << std::endl;