Types 面试-整数的大小
我刚刚接受了电话采访,他们问了我这个问题: “一个整数的大小是多少,计算公式是什么?” 我不知道(好吧,我有点笨),但我只是好奇地想找到答案。我猜是在第二垒。。但我不知道Types 面试-整数的大小,types,computer-science,primitive-types,Types,Computer Science,Primitive Types,我刚刚接受了电话采访,他们问了我这个问题: “一个整数的大小是多少,计算公式是什么?” 我不知道(好吧,我有点笨),但我只是好奇地想找到答案。我猜是在第二垒。。但我不知道 有人有什么想法吗?问题不清楚,您是在为不同的编程语言寻找整数位大小吗?或者你想知道int的最大值 顺便说一句,在java中,int是32位,max是2^31-1=2147483647,我想他问的是整数的范围。 在Java中,大小是4字节,所以应该在-2^31到2^31-1之间? 因为他问了这个等式。这个问题似乎是为了让你问他们
有人有什么想法吗?问题不清楚,您是在为不同的编程语言寻找整数位大小吗?或者你想知道int的最大值
顺便说一句,在java中,int是32位,max是2^31-1=2147483647,我想他问的是整数的范围。 在Java中,大小是4字节,所以应该在-2^31到2^31-1之间?
因为他问了这个等式。这个问题似乎是为了让你问他们:
- 您希望
类型编码的最大值是多少整数
MAX\u VALUE
是整数类型可以拥有的最大值
这就引出了等式。由于我们使用位对其进行编码,因此需要log\u 2(MAX\u值)
位来编码小于等于MAX\u值的任何正值。基数2的对数在那里,因为使用大小为n
的位模式,您最多可以编码2^n
不同的值。因此,如果您想知道编码MAX_值所需的最大位模式时间,您需要计算log
,因为:
2^(log_2(MAX_VALUE)) = MAX_VALUE
这没关系,除非你也想对数字0进行编码。如果您也想对0进行编码,那么在0和MAX_值之间有MAX_值+1个数字,因此您需要log_2(MAX_值+1)
位对它们进行编码
另一个重要问题是我们要编码的MIN\u值是什么
因此,您总共有MAX\u值+1+abs(MIN\u值)
不同的值,因此您需要:
bits_needed = log_2(MAX_VALUE + 1 + abs(MIN_VALUE))
正如其他人所提到的,在java中,int
具有最大值=2147483647
和最小值=-2147483648
。当您进行计算时,会得到等于32的log_2(4294967296)
。因此,32位是java中整数类型的大小。这完全取决于它。这个问题提出得不好。他们是否询问特定语言中的特定数据类型?表示某个十进制数需要多少位?还有别的吗?@MattBall只是一个整数的大小,这就是他们所要求的。我被搞糊涂了!那么你应该要求澄清,因为对于一个如此含糊的问题,没有正确的答案。他们可能希望你要求澄清。他们可能含糊其辞地回答了这个问题,看看你是否能准确地找到他们想要的东西。此外,他们可能想了解您对各种系统中的标准整数大小的了解,以及存储特定范围整数的最小大小。(log_2(最大值)
)用于未签名整数