-2

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

4

2 回答 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你会得到你的-32768and 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 回答