任何人都可以告诉我如何计算数据类型的范围?例如,在我们有smallint,integer和bigint的MySQL或PostgreSQL中,smallint的范围是-32768或+32767。这些范围是如何计算的?
答案 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
你可以找到很多文档:搜索“补充格式算术数字”