新人の頃、毎日唱えて暗記しました。「読み」を声に出すと、意外と記憶に残りやすいようです。
なぜこんなのを覚えるかというと、ワーキングメモリが貧弱なので、技術書を読む時など、めんどくさい計算はなるべくショートカットして、思考の負担を少しでも減らしたいからです。
2^n | 10進数 | 読み | 覚え方 |
---|---|---|---|
2^6 | 64 | ロクヨン | 6が共通 |
2^8 | 256 | ニゴロ | みんな大好き |
2^10 | 1,024 | センニジュウヨン | 10が共通 |
2^12 | 4,096 | ヨンマルキュウロク | ページサイズ(4K) |
2^16 | 65,536 | ロクゴゴサンロク | 16ビットレジスタの 64Kオフセットの壁 |
2^20 | 1,048,576 | 104万8,576 | 8086のA20ゲート |
2^22 | 4,194,304 | 419万4,304 | 特になし |
2^24 | 16,777,216 | 1,677万7,216 | System/360のアドレス長 |
2^30 | 1,073,741,824 | 10億7,374万1,824 | 1GiB |
2^31 | 2,147,483,648 | 21億4,748万3,648 | 2GiB |
2^32 | 4,294,967,296 | 42億9,496万7,296 | 4GiB |
2^64 | 18,446,744,073,709,551,616 | イヤシシ・ムナシシ・オナミナ・オクゴゴ・イロイロ | 16EiB |
2^n
の形式で表現される整数は、「n
ビットで表現可能な整数の種類数」でもあります。1ビットでは0
と1
の2パターンが表現可能なので、n
ビットにおいては2^n
パターンが表現可能、という寸法ですね。
2^n-1
の形式で表現される整数は、「n
ビットがすべて1
」という内部表現になります。このことから、n
ビットの符号つき整数の最大値は、2^(n-1)-1
の形式をもちます(最上位ビットが符号ビットとなるため(n-1
)乗となる)。
この知識を利用すると、32
ビットのsigned int
の最大値は?と聞かれても、「(えーと0111...
だから2^31-1
で)2,147,483,647
」と即答できるようになります。
また、「ビットがすべて1
」の内部表現について、符号あり整数(負数は2の補数で表現)として解釈した場合、-1
となります。
2^n-1 | 2進数 | 符号あり整数 |
---|---|---|
2^8-1 | 1111_1111 | -1 |
2^16-1 | 1111_1111_1111_1111 | -1 |
2^32-1 | 1111_1111_1111_1111_ 1111_1111_1111_1111 |
-1 |
記憶容量の単位です。
2^n | 10進数 | |
---|---|---|
1KiB | 2^10 | 1,024 |
4KiB | 2^12 | 4,096 |
1MiB | 2^20 | 1,048,576 |
1GiB | 2^30 | 1,073,741,824 |
4GiB | 2^32 | 4,294,967,296 |
16EiB | 2^64 | 18,446,744,073,709,551,616 |
左ビットシフトです。n
ビット左シフトは、2^n
倍と等価です。
2<<n | 10進数で何倍か |
---|---|
2<<3 | x 8 |
2<<4 | x 16 |
2<<8 | x 256 |