算法,以确定持有int需要多少字节

Ano*_*ous 4 c++ algorithm math

对于这个愚蠢的问题感到抱歉,但是我将如何计算,数学或使用c ++,存储整数需要多少字节.

Ern*_*ill 9

您可以找到比您的数字大的2的第一个幂,并将该幂除以8,然后将该数字四舍五入到最接近的整数.所以对于1000,2的幂是1024或2 ^ 10; 将10除以8得到1.25,并向上舍入为2.你需要两个字节来容纳1000!

  • 不是8,而是'CHAR_BIT`. (2认同)

sar*_*old 6

如果从信息论的角度来看,那么简单的答案就是:

log(number) / log(2)
Run Code Online (Sandbox Code Playgroud)

(如果它们是自然的,二进制的或常用的对数,则无关紧要,因为除以log(2),它用基数计算对数2.)

这会报告存储您的号码所需的位数.

如果您对在特定语言或环境中对数字进行有效通常编码所需的内存感兴趣,则需要进行一些研究.:)

整数的典型C和C++范围是:

 char    1 byte
 short   2 bytes
 int     4 bytes
 long    8 bytes
Run Code Online (Sandbox Code Playgroud)

如果您对任意大小的整数感兴趣,可以使用特殊库,并且每个库都有自己的内部存储机制,但它们通常通过4或8字节块来存储数字,直到数字大小.

  • 几乎 - 你需要向上舍入到最接近的8的倍数,因为他询问了多少字节 (2认同)