【问题标题】:How the maximum value of Bytes is calculated?Bytes的最大值是如何计算的?
【发布时间】:2013-11-17 07:53:29
【问题描述】:

谁能告诉我数据类型的范围是如何计算的?例如,在 MySQL 或 PostgreSQL 中,我们有 smallint、integer 和 bigint,smallint 的范围是 -32768 或 +32767。这些范围是如何计算的?

【问题讨论】:

  • 通过使用……啊,数学……?
  • 我在问-32786和+32767这个值是怎么推导出来的?
  • 它们的结果是计算机使用二进制系统。

标签: mysql postgresql sqldatatypes


【解决方案1】:

在文档中查看此页面

http://www.postgresql.org/docs/9.2/static/datatype-numeric.html

数字基于数据二进制宽度 0111111111111111 ~ 32767, 1000000000000000 ~ -32768

你可以找到很多文档:搜索“补码格式算术数”

【讨论】:

    【解决方案2】:

    您的数据类型是int,表示为 2 字节类型。 2 bytes 表示其二进制表示中的 2 x 8 = 16 位。此外,您的示例数据类型是 signed - 这意味着最高位将用作符号(0 表示正数,1 表示负数)。

    从数学可知,对于二进制值,您可以保存 2^n 唯一值,即对于您的 16-1 位,这将是 15 个空闲位。所以这将是-(2^n) .. 2^n-1 范围,其中n=15。当您计算-(2^15)2^15 - 1 时,您将得到-3276832767。就是这样。

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 2014-10-05
      • 2021-12-21
      • 2012-10-14
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      相关资源
      最近更新 更多