データ型の範囲がどのように計算されるか教えてもらえますか? たとえば、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
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 に答える