您可以找到比您的数字大的2的第一个幂,并将该幂除以8,然后将该数字四舍五入到最接近的整数.所以对于1000,2的幂是1024或2 ^ 10; 将10除以8得到1.25,并向上舍入为2.你需要两个字节来容纳1000!
如果从信息论的角度来看,那么简单的答案就是:
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字节块来存储数字,直到数字大小.