Поскольку каждая десятичная цифра передает ту же информацию, что и lb 10
бит, любое 50-значное число будет помещаться в ceil(lb(10)*50) = 167
бит.
В частности, это не так сложно преобразовать из десятичной в двоичную, даже вручную. Просто разделите на два и поместите модуль (1, если последняя цифра была нечетной, 0, если четная) в конце вашего двоичного результата. Если вам нужны такие большие числа в программе, просто используйте большую целочисленную реализацию вашей платформы, например, BigInteger
в Java и просто int
в Python. В отсутствие этого ищите числовую библиотеку.
Да, и 10 ^ 49 в двоичном формате имеет длину 163 бита:
110
1101 0111 1001 1111 1000 0010 0011 0010
1000 1110 1010 0011 1101 1010 0110 0001
1110 0000 0110 0110 1110 1011 1011 0010
1111 1000 1000 1010 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000