Как представить число n (предположим, основание 10), используя х бит? - PullRequest
0 голосов
/ 01 февраля 2011

Мне нужно представить число n, используя ТОЛЬКО x бит.Обычно я могу выбрать подходящую базу и найти необходимое количество цифр.Но здесь я ограничен тем, что у меня есть только биты «х».Однако я могу иметь больше 1 набора битов x.

Я пытаюсь понять, как числа могут быть представлены в любой системе, подобной этой.

1 Ответ

1 голос
/ 02 февраля 2011

Не уверен, правильно ли я понял вашу проблему, но при условии, что у вас есть натуральное число x, которое может быть представлено m (например, 20) битами, но у вас есть только массивы из n битов (скажем, байтов, т.е. 8-битные массивы), количество необходимых вам массивов просто m / n округляется до следующего натурального числа. Для числа с 20 цифрами в двоичном формате это будет 3 байта.

например. если ваш номер

1001 01101100 10110100,

Вы можете сохранить его как

00001001

01101100

10110100.

То, что вы сделали, это

  1. (целое число) разделите ваше число на 100000000 (10 ^ 1000 или 2 ^ 8 в десятичной системе), запишите остаток, урежьте результат

  2. (целое число) разделите результат 1. на 100000000, запишите остаток, урежьте результат

  3. (целое число) разделите результат 2. на 100000000, запишите остаток, урежьте результат

  4. больше ничего интересного делать, потому что результат 3 был 0.

Предполагая, что мы говорим здесь о натуральных числах, в десятичной системе приведенное выше будет выглядеть так:

1. 617652/256 = 2412 remainder 180 (10110100 in binary system)

2.   2412/256 =    9 remainder 108 (01101100 in binary system)

3.      9/256 =    0 remainder   9 (00001101 in binary system)

Итак, что вы делаете, это

while (number > 0) {
    divide number by 2^n
    remember remainder
    truncate number
}

Восстановление исходного номера оставлено в качестве упражнения:)

Это действительно проблема, которая возникает, когда вы хотите иметь дело с очень большими целыми числами на компьютере. Я думаю, что хорошее место для поиска дополнительной информации может быть http://en.wikipedia.org/wiki/Positional_notation.

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