我刚刚接受了电话面试,他们问了我这个问题:
“整数的大小是多少,计算出这个的方程式是什么?”
我不知道(好吧,我有点愚蠢),但这只是让我很想找出答案。我个人的猜测是以 2 为底数。但我不知道。
有人有想法么?
我刚刚接受了电话面试,他们问了我这个问题:
“整数的大小是多少,计算出这个的方程式是什么?”
我不知道(好吧,我有点愚蠢),但这只是让我很想找出答案。我个人的猜测是以 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,647
和min_value = -2,147,483,648
. 当你进行计算时,你得到log_2(4294967296)
等于 32。所以 32 位是 java 中整数类型的大小。
我认为他要求整数的范围。在 Java 中,大小是 4 个字节,所以应该从 -2^31 到 2^31-1?既然他要了方程式。
问题不清楚,您是否正在寻找不同编程语言的整数位大小?或者您想知道 int 的 MAX 值。
顺便说一句,在 java 中,int 是 32 位,最大值是 2^31-1=2,147,483,647