Вычислительная арифметика c - сколько бит необходимо для числа 8 di git - PullRequest
1 голос
/ 27 января 2020

сколько байтов (и сколько битов) вам нужно для представления числа 99999999? Мне нужно знать это: у нас есть калькулятор, самый простой из возможных, и он может вместить до 8 цифр, то есть от 0 до 99999999 (давайте забудем о минусах, если только вы не чувствуете себя комфортно для включения в ваш ответ).

Сколько бит / байт нам нужно для хранения значений от 0 до 99999999 включительно?

Я ценю вашу помощь, любезно предоставьте теоретические данные и любые вычисления, если можете. Большое спасибо!

Ответы [ 2 ]

1 голос
/ 27 января 2020

Поскольку имеется 8 цифр, и каждая ди git может иметь 10 значений (0, 1,…, 9), общее количество представляемых чисел составляет 10 ^ 8. Чтобы представить такое количество чисел в двоичном виде, у нас должно быть такое количество цифр N, чтобы при присваивании только одного из двух значений (0, 1) для каждой позиции было получено как минимум столько представимых чисел, сколько мы имеем в десятичной дроби. То есть мы должны решить

2^N >= 10^8

Мы можем взять журнал base-2 с обеих сторон, чтобы получить

N >= log_2(10^8) = 8 * log_2(10)

На данный момент, надеюсь, у вас есть удобный калькулятор для расчета log_2 (10). Обратите внимание, что это равно log_10 (10) / log_10 (2) = 1 / log_10 (2), если ваш калькулятор делает логарифмы в базе 10 по умолчанию. Ответ приходит к:

N >= ~26.58

Наименьшее целочисленное значение N, которое удовлетворяет этому, равно 27. Итак, требуется 27 цифр.

0 голосов
/ 27 января 2020

Короткий ответ - 27 бит или 4 байта, которые охватывают 32 бита. Более длинный ответ: вы должны представить 10 ^ 8 значений, поэтому log2 (10 ^ 8) примерно 26,575424759. Ceil это значение, и вы видите 27. Ceil 27 с группами по 8 бит, и у вас есть 32 бита, 4 байта

...