如何在java中计算以2为基数(2^n,其中n可以是任意数)的数的幂,而不使用 BigInteger 上课?假设我把二进制数1000000000000000000100000000001存储在给定的数组中,我想把它的值打印成十进制数(为了打印它,假设我们把它存储在字符串类型中)。
BigInteger
omvjsjqw1#
我不确定我是否完全理解你的问题,但如果n是二进制数转换成十进制数,那么你玩的数字太大了。把二进制数看作十进制数。您的示例是十进制数4294969345。试着想想2^4294969345是什么。例如,2^429等于1.38633485×10^129. 你不可能执行这个。我同意其他人的看法,请分享你的代码,也许你能得到更好的答案。编辑:如果只是从大二进制数到小数的转换,可以使用long.parselong(binarynumber,2),其中binarynumber是作为字符串的二进制数。
mwecs4sa2#
无论是数据结构还是原语,这些值都需要保存在某个地方以便“打印”,在您的情况下,它对于整数(>2^31)来说太大了,您可以使用long代替 (Long.parseLong(binary, 2)) 但最终如果它继续变大,你将需要另一种方法,或者使用 BigInteger 或者你自己的大脑。
(Long.parseLong(binary, 2))
2条答案
按热度按时间omvjsjqw1#
我不确定我是否完全理解你的问题,但如果n是二进制数转换成十进制数,那么你玩的数字太大了。
把二进制数看作十进制数。您的示例是十进制数4294969345。试着想想2^4294969345是什么。例如,2^429等于1.38633485×10^129. 你不可能执行这个。
我同意其他人的看法,请分享你的代码,也许你能得到更好的答案。
编辑:如果只是从大二进制数到小数的转换,可以使用long.parselong(binarynumber,2),其中binarynumber是作为字符串的二进制数。
mwecs4sa2#
无论是数据结构还是原语,这些值都需要保存在某个地方以便“打印”,在您的情况下,它对于整数(>2^31)来说太大了,您可以使用long代替
(Long.parseLong(binary, 2))
但最终如果它继续变大,你将需要另一种方法,或者使用BigInteger
或者你自己的大脑。