如何表示大于64位的二进制数字大小

时间:2012-10-22 05:14:14

标签: c++ binary

我有一个二进制数,我想用十进制表示。数量如下:

Binary = 1000 11100000 00000000 00000000 00000000 00000000 01101110 10110000 10100101  

它的等效十六进制表示如下:

Hexadecimal = 08 E0 00 00 00 00 6E B0 A5

我正在使用Windows 7并尝试在程序员模式下使用计算器与Bin(二进制)和Qword。但是,它有64位的限制。

问题:

  • 如何用十进制表示此数字?
  • 是否有可用于表示此号码的免费工具?
  • C ++ 11 / C ++中是否有任何方法可以实现这一目标?

3 个答案:

答案 0 :(得分:5)

首先确定您的平台将支持多大的二进制数。让我们说它是64.将二进制数除以64的块并按正常方式执行低阶块。现在,下一个块的低位表示2 64 。将该块转换为常规数字,但将其乘以2 64 。您可以根据需要多次使用此技术。下一个块你将乘以2 128 ,然后下一个2 192 等等。

答案 1 :(得分:0)

我认为你应该参考this

如果您要使用JAVA here,可以使用BigInteger类。

或者下载这个用户定义的库,用于在C ++ here中对大数字进行计算。

答案 2 :(得分:0)

更容易的解决方案可能是从另一方开始工作。生成10的所有幂的二进制表示:0x1, 0xA, 0x64, 0x3E8, 0x2710, ...,直到10的幂大于您的数字。然后,计算每次10次发生的次数(当然最多9次)。

因此0x2F4 * 0xA + 7 * 0xA,即47位小数。