【问题标题】:How to calculate range of data type eg int如何计算数据类型的范围,例如 int
【发布时间】:2020-10-31 05:23:31
【问题描述】:

我想知道为什么在公式中计算任何数据类型的范围 即2^(n-1),为什么是n-1,n是给定数据类型占用的位数

【问题讨论】:

标签: c++ variables int size formula


【解决方案1】:

假设类型为无符号,最大值为(2n)-1,因为有2n个值,其中一个为0。 2(n-1) 是单独的第 n 位的值 - 位 1 是 20,位 2 是 21,等等。

这对于任何基数都是一样的——在十进制系统中,n位可以表示10n个不同的值,最大值为10n-1,第 n 个数字是“价值”10(n-1).

比如小数点后三位最大的数是999(即103-1),小数点后第三位是“百位”,102.

【讨论】:

    【解决方案2】:

    第一个2^(n-1)不正确,数据类型表示的最大(无符号)数为:

    max = 2^n - 1
    

    所以对于 8 位数据类型,最大表示值为255

    2^n 告诉您所代表的数字数量(256 用于 8 位示例)但因为您想包含 0,所以范围是 0 to 255 而不是 1 to 256

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多