面试 - 整数的大小

时间:2012-11-05 17:55:54

标签: types computer-science primitive-types

我刚刚接受了电话采访,他们问我这个问题:

“整数的大小是多少,以及解决这个问题的公式是什么?”

我不知道(好吧,我有点愚蠢),但它只是让我感兴趣找到答案。我的猜测是在2号基数上计算的。但我不知道。

有人有什么想法吗?

3 个答案:

答案 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,647min_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? 因为他要求方程式。