データベースエンジンを渡り歩くときに躓かない、大きい整数と小さい整数の桁の覚え方
- 大きい整数や小さい整数って何桁なのか暗記できるようにしてみた。
どのくらいバイト数使っていいかで桁が決まっている
データ型 |
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でギリギリを攻めるなら符号なしにするかしないかで範囲がかなり違う
ちなみにRedshiftでは数値は符号つきしかなく、INT(1)はない
- 符号なし整数とか、BIGINTに型定義しないと入らないので注意