0

我刚刚接受了电话面试,他们问了我这个问题:

“整数的大小是多少,计算出这个的方程式是什么?”

我不知道(好吧,我有点愚蠢),但这只是让我很想找出答案。我个人的猜测是以 2 为底数。但我不知道。

有人有想法么?

4

3 回答 3

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))

正如其他人所提到的,在 javaint中有max_value = 2,147,483,647min_value = -2,147,483,648. 当你进行计算时,你得到log_2(4294967296)等于 32。所以 32 位是 java 中整数类型的大小。

于 2012-11-05T18:34:46.200 回答
0

我认为他要求整数的范围。在 Java 中,大小是 4 个字节,所以应该从 -2^31 到 2^31-1?既然他要了方程式。

于 2012-11-05T18:10:28.143 回答
0

问题不清楚,您是否正在寻找不同编程语言的整数位大小?或者您想知道 int 的 MAX 值。

顺便说一句,在 java 中,int 是 32 位,最大值是 2^31-1=2,147,483,647

于 2012-11-05T18:01:34.787 回答