首页 > 解决方案 > 在 C# 中使用长数据类型计算 2^N,其中 N 为 1929439432949324

问题描述

目前我需要计算2^N,但是N可以像 1929238932899 一样大,而且我被困在使用不能容纳这么大数字的长数据类型。

我目前已经尝试转换为“BigInt”,但是我仍然坚持我所看到的长数据类型限制。

我有一个计算功率的函数。但是,对于 long 数据类型,当数字变得太大时,它只会返回 0。请注意,这只是一个通用的递归幂函数。

例如,2^6它的意思是返回 64,而 with2^47是返回 140737488355328。但是,当它变成 时2^8489289,它只返回 0。

标签: c#numbersexponential

解决方案


要以二进制形式表示 2^N,您需要 N+1 位(二进制数字),即

(1 929 439 432 949 324 + 1) / 8 = 241 179 929 118 665.6 字节 ~ 219 PiB 对于单个数字,如果你真的想使用它。

或者您可以只以二进制形式写下 2^N:1 后跟 N 个零。


推荐阅读