c# - 在 C# 中使用长数据类型计算 2^N,其中 N 为 1929439432949324
问题描述
目前我需要计算2^N
,但是N
可以像 1929238932899 一样大,而且我被困在使用不能容纳这么大数字的长数据类型。
我目前已经尝试转换为“BigInt”,但是我仍然坚持我所看到的长数据类型限制。
我有一个计算功率的函数。但是,对于 long 数据类型,当数字变得太大时,它只会返回 0。请注意,这只是一个通用的递归幂函数。
例如,2^6
它的意思是返回 64,而 with2^47
是返回 140737488355328。但是,当它变成 时2^8489289
,它只返回 0。
解决方案
要以二进制形式表示 2^N,您需要 N+1 位(二进制数字),即
(1 929 439 432 949 324 + 1) / 8 = 241 179 929 118 665.6 字节 ~ 219 PiB 对于单个数字,如果你真的想使用它。
或者您可以只以二进制形式写下 2^N:1 后跟 N 个零。
推荐阅读
- javascript - 如何使用javascript检测对双击adsense(DFP)代码的阻止?
- javascript - 在 primefaces 问题中重定向
- unit-testing - ExpectCallFunc 或 OnCallFunc 是否有类似 Do() 的函数?
- c# - 从控制台应用程序接收文件时,IFormFile 始终为空
- javascript - 为什么带有参数的生成器函数会记住过去的获取响应
- arcgis - 图形图层转 Json 格式:ArcGIS api for javascript
- docker-swarm - 除管理器外的每个节点上的 Swarm 服务
- angular - 如何限制用户在浏览器中按下返回按钮 | 角度 6
- ruby - 如何解决 Aerospike::Exceptions::Aerospike:Ruby 客户端不支持的服务器功能?
- jacoco - 除 /tmp 之外的其他路径中不允许使用 bazel 生成 jacoco.exec