Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用字符数组实现的BigInteger的上限是多少?_C++_Memory_Numbers - Fatal编程技术网

C++ 使用字符数组实现的BigInteger的上限是多少?

C++ 使用字符数组实现的BigInteger的上限是多少?,c++,memory,numbers,C++,Memory,Numbers,如果我使用字符数组(在C++中)输入biginger,以10的幂计算,那么在32位系统中我的上限是多少 换句话说, -10^x

如果我使用字符数组(在C++中)输入
biginger
,以10的幂计算,那么在32位系统中我的上限是多少

换句话说,

-10^x
4GB内存为232字节,或4294967296字节

或者4294967295,如果我们减去你想要为符号保留的一个字节

这是34359738360

这许多位可以保存23435973860个唯一值

-10^x(−(2^(n)−1) ))至(2^(n)−1) − 1) 
计算有符号整数的范围,其中
n
是位数

假设您指的是分配的全部4GB内存,即32位内存空间中的232(4294967295)个可寻址字节,即235(34359738368)位

在开始的时候把它放到公式中,你得到的范围是-(2235-1)到2235-1-1

这是假设您使用位作为符号,而不是整个字节。如果要使用整个字节作为符号,则应计算235-8位的无符号范围。从0到2235-8−一,

根据佩奇的说法,要将基数为2的指数转换为基数为10的指数,应该使用公式x=m*ln(2)/ln(10),即从2m转换为10x


因此,你的答案是上界是10235-8*ln(2)/ln(10)。我甚至不打算尝试将该指数改为十进制值。

所涉及的类/结构的大小很重要:你能告诉我们它们吗?说清楚一点:你想知道一个4GB的变量可以代表多大的范围吗?32位系统与任何事情(除了如何获得4GB上限)有什么关系?如果只使用2的补码,就不需要使用完整字符来表示符号。还是说每个数字(相对于每个字节)都存储为一个字符?这是实现“
biginger
”的一种非常愚蠢的方法。愚蠢的是,当然。但这是一个理论问题@黑色假定为0。@ScottHunter是。32位,因为我想将其保存在内存中,并使其全部可寻址。4GB,因为这是32位系统的上限?我希望
x
的值是10的幂。是的,我回答完了。听起来差不多。我也这么认为,但我会等一段时间,在我接受你的答案之前,得到更多的答案。谢谢:)不清楚您是否需要一个字节中的单个数字(以10为基数)。如果是这样,这个答案的第一行应该是“一个8位字节可以容纳10个唯一值”