Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Week 1: コンピュータ基礎 プロジェクト・ミーミル
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hiro
March 25, 2026
53
0
Share
Week 1: コンピュータ基礎 プロジェクト・ミーミル
Hiro
March 25, 2026
More Decks by Hiro
See All by Hiro
Week 4: OS・シェル | プロジェクト・ミーミル
hiro8ma
0
35
Week 3: ネットワーク | プロジェクト・ミーミル
hiro8ma
0
53
Week 2: データ構造と計算量 | プロジェクト・ミーミル
hiro8ma
0
66
AI時代の開発を加速する組織づくり - ブログでは書けなかったリアル
hiro8ma
2
550
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
750
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
680
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
200
GitHub's CSS Performance
jonrohan
1032
470k
Utilizing Notion as your number one productivity tool
mfonobong
4
290
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
380
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
GraphQLとの向き合い方2022年版
quramy
50
15k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
We Are The Robots
honzajavorek
0
220
ラッコキーワード サービス紹介資料
rakko
1
3.1M
Transcript
Week 1: コンピュータ基礎 プロジェクト・ミーミル Phase 1 / 全15回 プロジェクト・ミーミル |
Week 1 1
今日のアジェンダ 時間 パート 0:00 オリエンテーション(5分) 0:05 講義①: ビットとデータ表現(15分) 0:20 講義②:
処理の流れ(15分) 0:35 プチテスト 8問(10分) 0:45〜 質疑・まとめ(バッファ) プロジェクト・ミーミル | Week 1 2
オリエンテーション プログラム全体: 4ヶ月・全15回(週1回) 学習方針: 暗記ではなく理解。Why を自分の言葉で説明できるのがゴール 最終ゴール: 7/22 最終テスト合格 →
技術面接官認定 事前に講義資料に目を通しておくこと プロジェクト・ミーミル | Week 1 3
今日のゴール この回が終わったら、以下ができる状態: 1. CPU・レジスタ・メモリ・IOの役割を自分の言葉で説明できる 2. 2進数変換とビット操作を手で計算できる — 頭で分かっているだけじゃなくて、 手が動くこと 3.
「なぜそうなっているか」のストーリーを持てている — 2の補数がなぜ便利か、 浮動小数点がなぜ誤差を生むか プロジェクト・ミーミル | Week 1 4
この講義がどこで生きるか 領域 実務との接点 面接 「CPUが命令を実行するプロセスを説明してください」 「0.1 + 0.2 が 0.3
にならないのはなぜですか」→ 今日の内容がそのまま出る フロントエン ド call stack size exceeded エラー(Next.js / React Native)→ スタ ックの話と直結 バックエンド (Go) goroutine → コンテキストスイッチの話と繋がる。メモリリーク → ヒ ープとGCの理解 プロジェクト・ミーミル | Week 1 5
対応するスキルDB評価基準 項目 確認ポイント 処理の流れ CPU・レジスタ・メモリ・IOと処理の流れを説明できる ビットとデータ表 現 データのビット表現を理解し、ビット操作・2進数変換ができ る プロジェクト・ミーミル
| Week 1 6
セクション1 ビットとデータ表現 プロジェクト・ミーミル | Week 1 7
2進数とは 各桁が ON(1)か OFF(0) しかない。ON なら重みを足す、OFF なら足さない 桁 指数 重み
覚え方 1桁目 2⁰ 1 前の数を倍にしていくだけ 2桁目 2¹ 2 3桁目 2² 4 4桁目 2³ 8 5桁目 2⁴ 16 6桁目 2⁵ 32 7桁目 2⁶ 64 8桁目 2⁷ 128 プロジェクト・ミーミル | Week 1 8
2進数の読み方 例: 101010 を10進数に変換 32 16 8 4 2 1
101010 1 0 1 0 1 0 → 1が立ってる桁だけ足す: 32 + 8 + 2 = 42 プロジェクト・ミーミル | Week 1 9
10進数 → 2進数の変換 2で割り続けて、余りを下から読む 13 ÷ 2 = 6 ...
余り 1 ← 1 桁目(重み1 ) 6 ÷ 2 = 3 ... 余り 0 ← 2 桁目(重み2 ) 3 ÷ 2 = 1 ... 余り 1 ← 3 桁目(重み4 ) 1 ÷ 2 = 0 ... 余り 1 ← 4 桁目(重み8 ) → 下から読む: 1101(2) 8 4 2 1 1 1 0 1 検算: 8 + 4 + 0 + 1 = 13 プロジェクト・ミーミル | Week 1 10
答え合わせ: 25 → 2進数 25 ÷ 2 = 12 ...
余り 1 ← 1 桁目(重み1 ) 12 ÷ 2 = 6 ... 余り 0 ← 2 桁目(重み2 ) 6 ÷ 2 = 3 ... 余り 0 ← 3 桁目(重み4 ) 3 ÷ 2 = 1 ... 余り 1 ← 4 桁目(重み8 ) 1 ÷ 2 = 0 ... 余り 1 ← 5 桁目(重み16 ) → 下から読む: 11001(2) 16 8 4 2 1 1 1 0 0 1 検算: 16 + 8 + 0 + 0 + 1 = 25 プロジェクト・ミーミル | Week 1 11
2の補数 コンピュータが 負の数 を表現する標準的な方法 求め方: 全ビット反転 + 1 +5 =
0000 0101 ↓ 全ビット反転 1111 1010 ↓ +1 -5 = 1111 1011 プロジェクト・ミーミル | Week 1 12
2の補数: なぜ便利か 加算回路だけで減算もできる! 5 + (-3) を2 進数で計算: 0000 0101
(+5) + 1111 1101 (-3: 0000 0011 を反転+1) ----------- 0000 0010 = 2 (桁あふれは無視) → ALUに足し算の仕組みさえあれば、引き算もできる → ハードウェアがシンプルにな る プロジェクト・ミーミル | Week 1 13
浮動小数点: なぜ誤差が出るか 0.1 を2進数に変換してみると… 0.1 × 2 = 0.2 →
0 0.2 × 2 = 0.4 → 0 0.4 × 2 = 0.8 → 0 0.8 × 2 = 1.6 → 1 0.6 × 2 = 1.2 → 1 0.2 × 2 = 0.4 → 0 ← ここからループ 整数 → 2進数: ÷2 / 小数 → 2進数: ×2 → 無限循環小数 → 有限ビットで打ち切る → 誤差の正体 プロジェクト・ミーミル | Week 1 14
浮動小数点: 実務での注意 0.1 + 0.2 // → 0.30000000000000004 var a
float64 = 0.1 var b float64 = 0.2 fmt.Println(a + b) // → 0.30000000000000004 fmt.Println(a + b == 0.3) // → false Go Playground で試す 0.01 を 1000回足すと → 10 じゃなくて 9.99... になる 金額計算では浮動小数点を使わない! → 整数で計算する 参考: メルペイの料率計算における小数の扱い プロジェクト・ミーミル | Week 1 15
ビット操作 操作 記号 説明 AND & 両方1のとき1 → マスク処理 OR
| どちらか1のとき1 → フラグ設定 XOR ^ 異なるとき1 → スワップ NOT ~ ビット反転 左シフト << ×2 右シフト >> ÷2 プロジェクト・ミーミル | Week 1 16
ビット操作: Goでの実例 // Go: フラグ管理の例 const ( FlagRead = 1
<< 0 // 001 = 1 FlagWrite = 1 << 1 // 010 = 2 FlagExec = 1 << 2 // 100 = 4 ) perm := FlagRead | FlagExec // 101 = 5 fmt.Println(perm&FlagWrite != 0) // false プロジェクト・ミーミル | Week 1 17
セクション1まとめ 評価基準 対応する内容 データがどの様にビットで表現されているか理解して いる 整数・浮動小数点の表現方 法 ビット操作が行える AND, OR,
XOR, シフト演算 整数値を2進数で表現できる 10進数 2進数の変換 プロジェクト・ミーミル | Week 1 18
セクション2 処理の流れ プロジェクト・ミーミル | Week 1 19
CPU・レジスタ・メモリ・IO ┌─────────────────────────┐ │ CPU │ │ ┌─────┐ ┌──────────┐ │ │
│ ALU │ │ 制御装置 │ │ ┌─────────┐ │ └─────┘ └──────────┘ │ ←→ │ メモリ │ │ ┌──────────────────┐ │ │ (RAM) │ │ │ レジスタ群 │ │ └─────────┘ │ └──────────────────┘ │ └─────────────────────────┘ ┌─────────┐ │ IO │ バス(データの通り道) │ ( 入出力) │ └─────────┘ プロジェクト・ミーミル | Week 1 20
各レジスタの役割 レジスタ 役割 プログラムカウンタ(PC) 次に実行する命令のアドレス アキュムレータ 演算結果を格納 スタックポインタ(SP) スタックの先頭アドレスを保持 命令レジスタ
現在実行中の命令を保持 プロジェクト・ミーミル | Week 1 21
命令実行サイクル CPUは以下のサイクルを 超高速に繰り返す(3GHz = 秒間30億回) ① フェッチ(Fetch ) → PC
(プログラムカウンタ)が示すアドレスから命令を読み出す ↓ ② デコード(Decode ) → 制御装置が命令を解読する ↓ ③ 実行(Execute ) → ALU が演算を実行する ↓ ④ ストア(Store ) → 結果をレジスタ/ メモリに書き戻す ↓ ⑤ PC をインクリメント → 次の命令へ プロジェクト・ミーミル | Week 1 22
スタックとヒープ スタック — LIFO(後入れ先出し) 関数の呼び出し情報(引数、戻りアドレス、ローカル変数) 関数呼び出しでフレームが積まれ、終了で取り除かれる サイズは比較的小さく固定的 ヒープ — 動的なメモリ領域
malloc (C) 、 new (Java/C++)で確保 プログラマ or GCが解放を管理 プロジェクト・ミーミル | Week 1 23
コンテキストスイッチ OSが 複数プロセスを並行実行 するための仕組み 1. 実行中プロセスの状態を 保存(レジスタ値、PC、SP) 2. 別のプロセスの状態を 復元
3. 超高速に切り替え → 人間には同時に見える コスト: 切り替え自体にオーバーヘッドがある プロジェクト・ミーミル | Week 1 24
セクション2まとめ: 評価基準との対応 評価基準 対応する内容 CPU、レジスタ、メモリ、IO と処理の流れを説明 できる 構成要素の役割と命令実行サイ クル 命令セットを理解している
フェッチ→デコード→実行→ス トア コンテキストスイッチを理解している プロセス切り替えの概念 プロジェクト・ミーミル | Week 1 25
プチテスト プロジェクト・ミーミル | Week 1 26
プチテスト 問題数: 8問(選択式 + 記述式) 制限時間: 15分 合格基準: 70%以上 別紙
quiz.md を参照 プロジェクト・ミーミル | Week 1 27
まとめ・次回予告 今日学んだこと ビットとデータ表現(2進数、整数、浮動小数点、ビット操作) 処理の流れ(CPU構成、命令実行サイクル、スタック/ヒープ、コンテキストスイッ チ) 次回: Week 2「プログラミング基礎〜中級」 変数・条件分岐・繰り返しの基礎確認 構造化プログラミング、アルゴリズム、データ構造、計算量
プロジェクト・ミーミル | Week 1 28
自習リソース リソース 内容 プログラムはなぜ動くのか 第3版 第1章〜第3章 第一回コンピュータ編(Notion) 今回の講義の元資料 応用情報 過去問
「コンピュータ構成要素」 「基礎理論」 プロジェクト・ミーミル | Week 1 29