我刚刚接受了一次电话面试,他们问我这个问题:
整数的大小是多少?解决这个问题的方程式是什么?
我不知道(好吧,我有点傻),但它只是激发了我找出答案的兴趣。我个人猜测是以2为基数的..但我不知道。
有谁有什么想法吗?
发布于 2012-11-06 02:34:46
看起来这个问题是为了让你问他们:
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中整数类型的大小。
发布于 2012-11-06 02:01:35
这个问题还不清楚,你是否在寻找不同编程语言的整数位大小?或者你想知道int的最大值。
顺便说一句,java中的int是32位,max是2^31-1=2,147,483,647
发布于 2012-11-06 02:10:28
我想他要求的是整数的范围。在Java中,大小是4个字节,因此应该在-2^31到2^31-1之间。因为他要了方程式。
https://stackoverflow.com/questions/13237637
复制相似问题