为什么Int32的最大值为0x7FFFFFFF? [英] Why is Int32's maximum value 0x7FFFFFFF?
问题描述
我在MSDN文档中看到 Int32
的最大值是2,147,483,647
,十六进制0x7FFFFFFF
.
I saw in MSDN documents that the maximum value of Int32
is 2,147,483,647
, hexadecimal 0x7FFFFFFF
.
我认为,如果它是Int32
,则应存储最终应为4,294,967,295
和十六进制0xFFFFFFFF
的32位整数值.
I think, if it's Int32
it should store 32-bit integer values that finally should be 4,294,967,295
and hexadecimal 0xFFFFFFFF
.
我的问题是为什么Int32
存储31位整数值?
My question is why Int32
stores 31-bit integer values?
推荐答案
这是因为它是一个带符号的整数.一个无符号的32位整数为您提供期望的值.
It's because it's a signed integer. An unsigned 32-bit integer give you the value you expect.
查看此MSDN页面- http://msdn.microsoft.com/zh-CN/library/exx3b86w(v=vs.80).aspx
Check out this MSDN page - http://msdn.microsoft.com/en-us/library/exx3b86w(v=vs.80).aspx
要详细了解为什么这样做,请查看Jackson Popes答案中与Two的补数表示形式有关的链接.
For a more in depth explanation on why this is check out the link in Jackson Popes answer related to Two's Complement number representation.
还有一些进一步阅读.
这篇关于为什么Int32的最大值为0x7FFFFFFF?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!