如何计算字节的最大值?

时间:2013-11-06 07:01:27

标签: mysql postgresql sqldatatypes

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

2 个答案:

答案 0 :(得分: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时,您将获得32767和{{1}}。就是这样。

答案 1 :(得分:0)

在文档中查看此页面

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

数字来自数据二进制宽度0111111111111111~32767,1000000000000000~-32768

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