位取り記数法(2進数・10進数)
0と1だけの世界で、数はどう表される?
- 1
- 位取り記数法(2進数・10進数)の本質的な定義と直感的ビジュアルをシミュレーターで体験できる。
- 2
- 公式や証明の背景にある数学的意味と、厳密な導出ステップを解説。
- 3
- 実社会における工学応用(コンピュータ内部の整数表現とビット演算)のTypeScript実装コードを収録。
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
人間は指が10本あったため10進数を使ったが、電子回路は「電気がONかOFFか(1か0か)」の2値しか扱えない物理的制約から2進数が生まれた。
身につく武器・思考力
コンピュータがデータをどのように文字・画像・数値として内部保持しているかの仕組み(ビットとバイト)が腑に落ちるようになる。
実社会・ITでの活躍現場
- •すべてのコンピュータ・スマートフォン・CPUの基本動作(バイナリ演算)
- •Web開発におけるカラーコード表現(#FF5733 などの16進数表記)
- •ネットワークのIPアドレスやサブネットマスク(IPv4 / IPv6)
- •高速なフラグ管理や権限設定(Linuxパーミッション chmod 755 など)
Layer 1 — 直感・シミュレーター
上のビットのスイッチをオン・オフして2進数を作ってみよう。下の10進数の入力を変えると、対応する2進数が自動で計算される。両方を見比べて、位ごとの重みがどう積み上がるかを確かめよう。
10進数は「10集まると繰り上がる」のに対し、2進数は「2集まると繰り上がる」位取りの仕組みです。コンピュータのすべてのデータや画像、文字はこの0と1の組み合わせで表現されています。
Layer 2 — 定義・受験・証明
定義
わたしたちがふだん使う10進法は、位が1つ上がるごとに value が10倍になる「位取り記数法」である。同じしくみで、位が1つ上がるごとに値が2倍になる数え方を「2進法(2進数)」という。2進数では、使う数字は と の2種類だけである。
公式・数理モデル
証明・導出
10進数の は、、つまり各位の数字に の重みをかけて足し合わせたものである。
2進数も同じ考え方で、各位の数字(ビット)に の重みをかけて足し合わせる。たとえば2進数 は
となり、10進数の に等しい。逆に10進数を2進数に直すには、 で割り続けてあまりを下から並べればよい。
押さえておきたいポイント
- 位取り記数法では、右から 番目の位の重みは(10進数なら 、2進数なら )である
- 2進数は と の2種類の数字だけで、すべての整数を表せる
- コンピュータの中では、電気信号のオン・オフに対応させやすいため2進数が使われている
- 2進数1桁を「ビット(bit)」、8ビットをまとめたものを「バイト(byte)」という
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
コンピュータ内部の整数表現とビット演算
コンピュータのメモリは電気信号のオン・オフしか扱えないため、すべての整数は2進数(ビット列)として保存されている。ビットごとのAND・OR・シフト演算は、画像処理や暗号、権限管理のフラグなど幅広い場面で使われる基本操作である。
1// 10進数 -> 2進数の文字列に変換2function toBinary(n: number): string {3 return n.toString(2);4}56// 2進数の文字列 -> 10進数に変換7function toDecimal(bin: string): number {8 return parseInt(bin, 2);9}1011// ビット演算の例:フラグの管理12const READ = 0b0001; // 113const WRITE = 0b0010; // 214const EXEC = 0b0100; // 41516let permissions = READ | WRITE; // OR演算でフラグを立てる -> 0b0011 (3)17console.log(toBinary(permissions)); // "11"18console.log((permissions & WRITE) !== 0); // true: WRITE権限を持つか判定19console.log(toDecimal("1011")); // 11
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元