2013-09-08 1 views
1

Привет я хочу, чтобы вычислитьJava BigInteger пау с BigInteger показателем

2^(256bit number) 

в Java, но функция пау BigInteger просто может обрабатывать Интс.

Как я могу рассчитать с большими номерами?

Есть ли какая-нибудь библиотека?

я хочу, чтобы вычислить все числа от

2^0 
2^1 
2^2 
... 
2^(10^77) 
+0

Вы всегда можете использовать больше ушей ... (если не для сдвига бит). Любопытно однако: Почему? – ppeterka

+0

Возможный дубликат [Очень большие числа в Java без использования java.math.BigInteger] (http://stackoverflow.com/questions/5318068/very-large-numbers-in-java-without-using-java-math-biginteger) – leonm

+0

Для этого конкретного случая вы можете использовать shiftLeft, но это странный надзор. – Antimony

ответ

4

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

Рассмотрите 2^(256-битное число). Результат имеет бит (256 бит), что означает, что он занимает больше памяти, чем частицы во Вселенной.

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

Можно было бы сделать 2^(2^32) и экспоненты, близкие к этому, но это, вероятно, рассматривалось как нишевый случай, который они просто не удосуживали добавить функцию.

+0

Мне также интересно ... Согласно [этому] (http://www.universetoday.com/36302/atoms-in-the-universe/#ixzz2eKpF46oC): «Число атомов во всей наблюдаемой вселенной оценивается в пределах от 10^78 до 10^82 ». – ppeterka

+0

2^256 просто бывает 10^77, поэтому я был ближе, чем думал. Во всяком случае, это просто грубое сравнение. Дело в том, что оно больше, чем вы когда-либо могли бы разумно вычислить. – Antimony

+1

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