为什么Int32最大值是0x7FFFFFFF?

Afs*_*ani 23 c# types int32

我在MSDN文档中看到,最大值Int322,147,483,647十六进制0x7FFFFFFF.
http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx

我认为,如果它Int32应该存储32位整数值,最终应该是4,294,967,295十六进制0xFFFFFFFF.

我的问题是为什么Int32存储Int32位整数值?

Llo*_*oyd 34

这是因为它是有符号整数.无符号的32位整数为您提供所期望的值.

查看此MSDN页面 - http://msdn.microsoft.com/en-us/library/exx3b86w(v=vs.80).aspx

为了更深入地解释为什么要查看这一点,Jackson Popes中的链接回答与Two的补语数字表示有关.

还有一些进一步阅读.

  • `int32`是两个恭维数,所以说顶部位是符号位并不严格公平.这将是一个恭维数字. (2认同)
  • @harold不要误导并做出正确的陈述. (2认同)

Jac*_*ope 8

因为一位用于存储符号(Int32可以小于零).

http://en.wikipedia.org/wiki/Two%27s_complement


小智 6

Int32和Int64都是有符号的,因此它们可以处理从-capacity/2到(capacity/2)-1(对于零)的整数值,这就是为什么最大值不是您期望的值.但是你可以通过使用unsigned int得到你想要的东西只有正数.


888*_*888 5

您没有考虑负数。 Int32有迹象。

从MSDN:http://msdn.microsoft.com/en-us/library/system.int32.minvalue.aspxMinValue-2,147,483,648; 即十六进制0x80000000


Cha*_*leh 5

第一位是符号-一个int32是带符号的,即它可以是正/负(好吧,我可能不应该说“第一”位!)