我刚刚接受了电话采访,他们问我这个问题:
“整数的大小是多少,以及解决这个问题的公式是什么?”
我不知道(好吧,我有点愚蠢),但它只是让我感兴趣找到答案。我的猜测是在2号基数上计算的。但我不知道。
有人有什么想法吗?
答案 0 :(得分:2)
似乎问这个问题让你问他们:
integer
类型进行编码的最大值是什么?假设他们说我们希望MAX_VALUE
是整数类型可以有的最大值。
这将我们带到了等式中。由于我们使用位对其进行编码,因此我们需要log_2(MAX_VALUE)
位来编码大小最大为MAX_VALUE
的任何正值。基数2的对数存在,因为使用大小为n
的位模式,您可以编码最多2^n
个不同的值。因此,如果您想知道编码MAX_VALUE
所需的最大位模式需要多长时间,则需要计算log
,因为:
2^(log_2(MAX_VALUE)) = MAX_VALUE
现在这没关系,除非你也想编号为0.如果你想编码0,那么在0和MAX_VALUE之间有MAX_VALUE + 1个数字,所以你需要log_2(MAX_VALUE+1)
个位对它们进行编码
另一个重要问题是我们想要编码的MIN_VALUE
是什么?
因此总共有MAX_VALUE + 1 + abs(MIN_VALUE)
个不同的值,因此您需要:
bits_needed = log_2(MAX_VALUE + 1 + abs(MIN_VALUE))
正如其他人所提到的,在java int
中有max_value = 2,147,483,647
和min_value = -2,147,483,648
。当你进行计算时,得到log_2(4294967296)
等于32.所以32位是java中整数类型的大小。
答案 1 :(得分:0)
问题不明确,您是否在寻找不同编程语言的整数位大小?或者你想知道int的MAX值。
BTW,在java int中是32位,最大值是2 ^ 31-1 = 2,147,483,647
答案 2 :(得分:0)
我认为他要求整数范围。 在Java中,大小是4个字节,所以应该从-2 ^ 31到2 ^ 31-1? 因为他要求方程式。