谁能告诉我数据类型的范围是如何计算的?例如,在我们有 smallint、integer 和 bigint 的 MySQL 或 PostgreSQL 中,smallint 的范围是 -32768 或 +32767。这些范围是如何计算的?
问问题
2135 次
2 回答
3
您的数据类型int
表示为 2 字节类型。2 bytes
表示2 x 8 = 16
其二进制表示中的位。此外,您的样本数据类型是有符号的- 这意味着最高位将用作符号(0
对于正数,1
对于负数)。
从数学可知,使用二进制值,您可以保存2^n
唯一值,即您的16-1
位将是 15 个空闲位。所以这将是-(2^n) .. 2^n-1
范围,在哪里n=15
。当你计算时-(2^15)
,2^15 - 1
你会得到你的-32768
and 32767
。就是这样。
于 2013-11-06T07:16:34.023 回答
0
在文档中查看此页面
http://www.postgresql.org/docs/9.2/static/datatype-numeric.html
数字基于数据二进制宽度 0111111111111111 ~ 32767, 1000000000000000 ~ -32768
你可以找到很多文档:搜索“补码格式算术数”
于 2013-11-06T07:17:52.387 回答