Why is Int32's maximum value 0x7FFFFFFF?

前端 未结 6 683
野趣味
野趣味 2021-02-02 10:38

I saw in MSDN documents that the maximum value of Int32 is 2,147,483,647, hexadecimal 0x7FFFFFFF.

I think, if it\'s Int32 it should store 32-bi

相关标签:
6条回答
  • 2021-02-02 11:18

    Because one bit is used to store the sign (Int32 can be less than zero).

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

    0 讨论(0)
  • 2021-02-02 11:22

    Int32 and Int64 are both signed so they can handle integer values from -capacity/2 to (capacity/2)-1 (for zero) that is why the max value isn't the one you expected. But you can get what you want by using an unsigned int to have only positive numbers.

    0 讨论(0)
  • 2021-02-02 11:23

    In a 2's complement signed n-bit type, the range is from -2n-1 to 2n-1-1 because with n bits you can represent 2n different values, half of which is used for signed numbers because of the sign bit. The remaining 2n-1 half is used for non-negative number. Since one is used for 0, there are only 2n-1-1 remaining values for positive numbers

    0 讨论(0)
  • 2021-02-02 11:25

    It's because it's a signed integer. An unsigned 32-bit integer give you the value you expect.

    Check out this MSDN page - http://msdn.microsoft.com/en-us/library/exx3b86w(v=vs.80).aspx

    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.

    Also some further reading.

    0 讨论(0)
  • 2021-02-02 11:35

    You are not considering the negative numbers. Int32 have the sign.

    From MSDN: http://msdn.microsoft.com/en-us/library/system.int32.minvalue.aspx The MinValue is -2,147,483,648; that is, hexadecimal 0x80000000.

    0 讨论(0)
  • 2021-02-02 11:40

    The first bit is the sign - an int32 is signed, i.e. it can be positive/negative (well I probably shouldn't say 'first' bit!)

    0 讨论(0)
提交回复
热议问题