LoginSignup
4
7

More than 5 years have passed since last update.

8,16,32,64 ☆4ステップで暗記できる、BIGINTの数値の範囲の覚え方

Last updated at Posted at 2016-01-12

データベースエンジンを渡り歩くときに躓かない、大きい整数と小さい整数の桁の覚え方

  • 大きい整数や小さい整数って何桁なのか暗記できるようにしてみた。

どのくらいバイト数使っていいかで桁が決まっている

  • 符号ありでしたらこんな感じ。
データ型 Range ストレージ
bigint -2^63 (-9,223,372,036,854,775,808) ~ 2^63-1 (9,223,372,036,854,775,807) 8 バイト
int -2^31 (-2,147,483,648) ~ 2^31-1 (2,147,483,647) 4 バイト
smallint -2^15 (-32,768) ~ 2^15-1 (32,767) 2 バイト
tinyint 0 ~ 255 1 バイト

まずはビットとバイトの違い

1ビット= 0か1で 2通り

1バイト=8ビット

  • 説明はしない。

1バイトで表せる範囲=2^8 (2の8乗)

  • 2^8 (2の8乗)で256通りのデータ、ゼロをいれると 0-255 までが表せる

1バイトの数値型の範囲は0-255 (1しかないので符号はあらわせない)

2バイトで表せる範囲=2^16 (2の16乗) 符号に1個使うと±2^15(2の15乗)

  • 2バイト(8×2=16ビット)では符号あり、なしで2通り
最初の1ビット 数値の範囲
符号付き 1ビットは符号に使うとあとの15ビットで2^15(2の15乗)ゼロをはさんで2^15 -1
符号なし 0 ~ (2^16 - 1 = 65,535)

バイト数 N の場合

  • 以後、パターンがある
最初の1ビット 数値の範囲
符号付き   -2^(8n-1) ~ {2^(8n-1)-1}
符号なし 0 ~ (2^8n-1)
  • 人間が使う範囲で押さえとく
TINY INT(1) SMALL INT (INT2) INT(4) BIGINT (INT8)
バイト数 1バイト 2バイト 4バイト 8バイト
最大値 2^8 (2の8乗) -1 2^16 -1 2^32 -1 2^64 -1
符号あり - -2^15 ~ 2^15-1 -2^31 ~  2^31 -1 -2^63 ~ 2^63 -1

2の16,32,64乗という単位くらい暗記したい

  • だいたいで。
べき乗 読み方 覚え方
2^64 一千八百四十四京 六千七百四十四兆 七百三十七億 九百五十五万 一千六百十六 K点超え、1千京
2^63 -1 九百二十二京三千三百七十二兆三百六十八億五千四百七十七万五千八百七 9百京
2^32 四十二億九千四百九十六万七千二百九十六  42億
2^31 -1 二十一億四千七百四十八万三千六百四十七 21億
2^16 六万五千五百三十六 6万
2^15-1 三万二千七百六十七 3万
2^8 二百五十六 にごろ。
  • 10進法ってどこまで数えられるんだろう、京の次が気になるかたはこちらを読むとなかなか面白い

https://ja.wikipedia.org/wiki/%E5%91%BD%E6%95%B0%E6%B3%95

BIGINTでギリギリを攻めるなら符号なしにするかしないかで範囲がかなり違う

  • 2倍になるだけだけど、1000京ちかく増えるし。

ちなみにRedshiftでは数値は符号つきしかなく、INT(1)はない

  • 符号なし整数とか、BIGINTに型定義しないと入らないので注意
4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7