-2

データ型の範囲がどのように計算されるか教えてもらえますか? たとえば、smallint、integer、bigint がある MySQL または PostgreSQL では、smallint の範囲は -32768 または +32767 です。これらの範囲はどのように計算されますか?

4

2 に答える 2

3

データ型はint2 バイト型として表されます。バイナリ表現のビットを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が得られます。それでおしまい。-3276832767

于 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 に答える