【基础知识】符号整数和非符号整数

uint8 uint16uint32是无符号整数类型,分别有16位和32位。它们能存储的数字数量由其位数决定。

  1. unit8 : 是8位无符号整数,可以存储的数量是2^8 ; 因为包括一个0, 所以范围是0~255

  2. **uint16**:

    • uint16是一个16位的无符号整数。
    • 它可以存储的数字数量是 2^16。
    • 计算得出:216=65536216=65536。
    • 因此,uint16能存储的数字范围是从0到65535。
  3. **uint32**:

    • uint32是一个32位的无符号整数。
    • 它可以存储的数字数量是 2^32。
    • 计算得出:232=4294967296232=4294967296。
    • 因此,uint32能存储的数字范围是从0到4294967295。

总结:

  • uint16能存储的数字数量是 216216,即65536个数字。
  • uint32能存储的数字数量是 232232,即4294967296个数字。

int32是一个32位的有符号整数,其数值范围是从 −231−231 到 231−1231−1。这里使用31次方而不是32次方的原因是,有符号整数的最高位(即最左边的位)用于表示符号,其中0表示正数,1表示负数。因此,实际用于表示数值的位数是31位。

具体来说:

  • 对于正数,最高位是0,剩下的31位可以表示 231231 个不同的正数值。
  • 对于负数,最高位是1,剩下的31位可以表示 231231 个不同的负数值。
  • 由于0既不是正数也不是负数,它单独占用了一个数值。

因此,int32的总数值范围是从 −231−231 到 231−1231−1,包括了 231231 个负数,231−1231−1 个正数,以及0。这就是为什么我们说int32的范围是31次方而不是32次方的原因。


【基础知识】符号整数和非符号整数
https://leiqi.top/2024-11-23-dce4118b03a7.html
作者
Lei Qi
发布于
2024年11月23日
许可协议