首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >面试-整数的大小

面试-整数的大小
EN

Stack Overflow用户
提问于 2012-11-06 01:55:54
回答 3查看 113关注 0票数 0

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

整数的大小是多少?解决这个问题的方程式是什么?

我不知道(好吧,我有点傻),但它只是激发了我找出答案的兴趣。我个人猜测是以2为基数的..但我不知道。

有谁有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-06 02:34:46

看起来这个问题是为了让你问他们:

  • 您希望integer类型编码的最大值是多少?

假设他们说我们希望MAX_VALUE是一个整数类型可以拥有的最大值。

这就把我们带到了等式。因为我们是使用位编码的,所以我们需要log_2(MAX_VALUE)位来编码任何大小为MAX_VALUE的正值。基数2的对数在那里,因为使用大小为n的位模式,您可以编码至多2^n个不同的值。因此,如果你想知道你的最大位模式需要多长时间来编码MAX_VALUE,你需要计算log,因为:

代码语言:javascript
运行
复制
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)不同的值,所以你需要:

代码语言:javascript
运行
复制
bits_needed = log_2(MAX_VALUE + 1 + abs(MIN_VALUE))

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

票数 2
EN

Stack Overflow用户

发布于 2012-11-06 02:01:35

这个问题还不清楚,你是否在寻找不同编程语言的整数位大小?或者你想知道int的最大值。

顺便说一句,java中的int是32位,max是2^31-1=2,147,483,647

票数 0
EN

Stack Overflow用户

发布于 2012-11-06 02:10:28

我想他要求的是整数的范围。在Java中,大小是4个字节,因此应该在-2^31到2^31-1之间。因为他要了方程式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13237637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档