アナログの音や映像をコンピュータで扱うためには、データをデジタル化する必要があるの。
そのときに行う大事なステップが3つあるわ。
それが標本化、量子化、符号化よ。
この3つの流れを順番に見ていきましょう。
標本化とは、
アナログ信号を一定の時間ごとに取り出すことよ。
音や映像などのアナログ信号は、本来は時間とともに連続的に変化しているわ。
そこで、その信号を一定の時間間隔で区切って、値を取り出していくの。
この操作を標本化(サンプリング)というのよ。
例えば映画では、一般的に1秒間に24枚の画像が使われているわ。
つまり、1秒間の動きを24回に分けて撮影しているということ。
これは「1秒間に24回、標本化している」と考えることができるの。
イルカが海を泳ぐ様子を撮るとして、1秒ごとに何回も写真を撮って記録するイメージね。

この回数を標本化周波数(サンプリング周波数)と呼ぶわ。
次に量子化よ。
標本化では「いつの値を取るか」を決めたけれど、量子化では
信号の大きさ(電圧)を段階的な値に丸める
の。
アナログ信号は本来、非常に細かい値をとるわ。
でもコンピュータでは無限の値を扱えないので、
決められた段階の値に近いものへ丸めるのよ。
これが量子化よ。
例えば、物差しで長さを測る場面を想像してみて。
本当は「12.345cm」かもしれないけれど、物差しの目盛りが1mm単位なら
12.3cm や 12.4cm
のように、近い値に合わせて測るわよね。

このように、細かい値を段階に合わせて丸めることが量子化なの。
量子化するときに使う段階の数は、量子化ビット数によって決まるわ。
例えば
・8bit → 256段階
・16bit → 65536段階
のようになるのよ。
最後が符号化よ。これは、
量子化によって得られた数値を、2進数(0と1)で表現すること
ね。
コンピュータは0と1しか理解できないから、データをこの形に変換する必要があるの。
音声データなどでは、この方法を
PCM(パルス符号変調)方式
と呼ぶこともあるわ。
このプロセスを、言葉の翻訳に例えてみましょう。
例えば、日本語で書かれた本を英語に翻訳するように、
量子化された数値を「0」と「1」の言葉に変える
それが符号化なのよ。

オッケー、標本化・量子化・符号化の違い、しっくりきたからしら??
最後に、3つの違いを覚えるコツを教えるわね。
昆虫の様子を一定の間隔で写真に撮る標本家(ひょうほんか)

猟師(りょう)が鹿(しか)の大きさを「小」「中」「大」の3段階で判断する

富豪家(ふごうか)が重要なメッセージを0と1に変換して送る

このイメージを覚えておけば、
標本化 → 量子化 → 符号化
の違いが自然に理解できるわ。
それじゃあ、またね!
今日は半加算回路についてお話しするわ。
ちょっとだけ本格的なテーマよ。でも大丈夫。ちゃんと順番にいくから安心してね。
半加算回路とは、
2進数の1ビットどうしを足し算する回路
のことよ。
コンピューターは「0」と「1」しか扱えない。
でもその0と1を足し算することで、大きな計算ができるようになるの。
その一番シンプルな足し算回路が、半加算回路なのよ。
まずは1ビットの足し算を見てみましょう
2進数の足し算はこうなるわ。
| A | B | 結果 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 10 |
最後を見て。
1 + 1 = 10
答えが2桁になるのよ。
つまり、2進数の足し算の結果は
の2つに分かれるということ。
ってことで、2つのA・Bという入力に対して、半加算回路の出力は次の2つがあるわ。
では、実際の半加算回路を見てみましょう。

この回路、よく見て。
上のAND回路から出ているのがC(繰り上がり)よ。
これはもうわかるわね?

両方が1のときだけ1になる。
じゃあ下の出力S(下の桁)はどうなっているのかしら?

真理値表で確認してみましょう。
| A | B | S | C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
どう?
これ、さっきの足し算と同じでしょう?
ほら、ちゃんと足し算になっているの。
そしてここが今日の一番大事なところ。
この回路、使っているのは、
だけ。
つまり、
今まで学んできた3つの基本回路だけで、足し算ができる
ということよ。
コンピューターは特別な「計算回路」を持っているわけじゃない。
AND・OR・NOTを組み合わせて、
計算そのものを作っているの。
フフッ、すごいでしょう?
論理回路が、ついに「算数」になった瞬間よ。
フフッ、今日はNOT回路についてお話しするわ。
でも安心して。あたしがわかりやすく説明するわね。
NOT回路は、デジタル論理回路の中でもとてもシンプルな回路よ。
入力が「1」なら出力は「0」
入力が「0」なら出力は「1」
つまり、
入力をひっくり返す回路なの。
オンならオフに。オフならオンに。
まるで「あまのじゃく」みたいでしょう?
NOT回路の記号はこんな形よ。

三角形の先に小さな丸がついているでしょう?
この丸(バブル)が「反転」を意味しているの。
この記号はインバータ(反転器)とも呼ばれるわ。
真理値表で見ると、さらにわかりやすいわよ。
| 入力 A | 出力 L |
|---|---|
| 0 | 1 |
| 1 | 0 |
見ての通り、入力と出力が逆になっているだけなの。
シンプルでしょう?
例えば、ライトを消すスイッチがあると考えてみて。
スイッチがオン(1)になると、ライトは消える(0)。
スイッチがオフ(0)なら、ライトは点く(1)。
普通とは逆の動きをするスイッチ。

それがNOT回路なのよ。
NOT回路は、
数式で書くなら、
L=¬A
ね。
ひとつの入力を反転する、もっとも基本的な回路。
それじゃあね。また一緒に勉強しましょう~!
フフッ、今日はOR回路についてお話しするわ。
最初に、OR回路ってなんのこっちゃって感じだと思うけれど、あたしがバッチリ解説するから安心してね。
OR回路は、コンピューターのデジタル論理回路の一種。
2つ以上の入力があって、それらのどれか1つでも「1(オン、電流が流れている状態)」があれば、出力が「1」になる
という特徴を持っているわ。
つまり、
どれか1つでもオンになればオッケーよ!
っていう回路ね。
OR回路を構成する記号はこんな感じで、ちょっとお洒落でしょう?

これはORゲートと呼ばれるものなの。
そして、真理値表。
これは入力に対する出力がどうなるかを表している表よ。
数学のように苦手かもしれないけど、これを見れば一目瞭然だから心配しないで。
| 入力 A | 入力 B | 出力 L |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
見ての通り、どちらかの入力が「1」なら、出力も「1」になるわよ。
じゃあ、どうやって直感的に理解するかしら?
フフッ、みんなと一緒に考えてみましょう。
例えば、ライトを付けるためのスイッチが2つあると考えてみて。この2つのスイッチのどちらを押してもライトが点く仕組みがOR回路なの。

つまり、Aを押したら点くし、Bを押しても点くわ。そしてどっちも押したら、もちろん点き続けるの!
こんな感じで簡単に理解できるから、ちゃんと押さえておくのよ。
それじゃあね!また会いましょう~!
AND回路について詳しく知りたいと思っている?
では、一緒に学んでいきましょう。
AND回路はデジタル回路で欠かせないロジックゲートのひとつよ。
これを使えば入力が二つとも「1」の場合だけ出力が「1」になるという仕組みなの。
AND回路は二つの入力が必要よ。
その入力をAとBとして、出力をLとした場合の式は
L=A∧B
これは二つの入力が「1」なら出力も「1」という意味ね。
AND回路は次のような図記号で表されるわ。

左側の2本の線が入力AとB。
右側の1本の線が出力Lよ。
このDのような形が「AND」を表す記号なの。
回路図では、この記号を論理ゲートと呼ぶわ。
真理値表はAND回路の動作を表す基本的な方法よ。
| A | B | L (A AND B) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
AND回路は、
つまり、
回路記号は「形」で表したもの。
真理値表は「表」で動きを表したもの。
数式は「式」で論理を表したもの。
同じAND回路を、図・式・表の3つの視点で説明しているのよ。
見方が違うだけで、中身は同じ。
そんじゃあね!
今日は「真理値表」って何?というところから始めるわね。
ここを理解すると、コンピューターの計算の仕組みが一気に見えてくるのよ。
一言でいうと、
入力と出力の関係をすべて書き出した表
よ。

コンピューターは「0」と「1」だけで動いているわよね。
だから、
入力が0や1のとき、出力がどうなるかを全部並べて確認するの。
それが真理値表。
入力が1つなら、組み合わせは2通りね。
| 入力 | 出力 |
|---|---|
| 0 | ? |
| 1 | ? |
じゃあ、入力がAとBの2つある場合は??
組み合わせは、
全部で4通り。
| A | B | 出力 |
|---|---|---|
| 0 | 0 | ? |
| 0 | 1 | ? |
| 1 | 0 | ? |
| 1 | 1 | ? |
これを全部書き出す。
それが真理値表。
コンピューターは、
必ずルール通りに動く
からよ。
だから、
どんな入力でも結果が決まっていないといけない。
その「ルールの一覧」が真理値表なの。
入力がn個なら、組み合わせは
2ⁿ通り
になるわ。
例:
入力が2つ(AとB)の場合:
| A | B |
|---|---|
| 0 | 0 |
| 0 | 1 |
| 1 | 0 |
| 1 | 1 |
ポイントは、
2進数の順番で並べること。
00 → 01 → 10 → 11
と数えていくのよ。
例えばAND回路なら。
「両方1のときだけ出力が1になる」
だから、
| A | B | 出力 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
これで完成よ。
特に「8通りなのに6通りしか書いてない」ミスは多いわよ。
そんじゃあね!
今日は高校「情報」でよく出てくる
文字コードとは何か?
を、わかりやすく解説していくわね。
まず一言でいうと、
文字を数字に変換するルール
これが文字コードよ。
コンピューターの中では、
もすべて0と1で表されているの。

つまり、
「あ」も「A」も「☆」も全部「数字」なのよ。
コンピューターは、
数字(2進数)しか理解できない
からよ。

だから、コンピューターに文字を伝えるときは「A」って伝えるんじゃなくて、
01000001
みたいなAに対応した文字コードを伝えるのね。
文字を対応する数字に変換しているの。
これが文字コード。
高校情報でまず出てくる文字コードは、
ASCII(アスキー)
ね。
これは、
を7ビットで表すルールよ。
例えば、「A」だったらこんな感じ。
A = 65(10進数) = 01000001(2進数)
ASCIIをもとに、
日本語の片仮名などを追加したもの
がJIS8ビットコード。
8ビットだから、
2⁸ = 256種類
の文字を表せるわ。
でもね。
漢字は何万字もあるの。
1バイト(8ビット)では足りないのよ。
そこで、日本語を扱うために、
などが作られたの。
例えば、平仮名の「あ」は
つまり、同じ「あ」でも、文字コードが違えば数字も違うの。
注目すべきはユニコードね。
これは、
世界中の文字を統一的に扱うために作られた文字コード
よ。
ユニコードの種類には、UTF-8やUTF-16などがあるわ。
今のインターネットは、ほぼUTF-8よ。
ここ、テストに出るわよ。
もし、ユニコードで保存した文章をJISコードとして読み込んだらどうなる??
そう、数字の解釈がズレて、
文字化けが起こる
のよ。おそらく、このようなよくわからない文字が誕生するわ。
�
縺ゅ>
繝�繧ケ
そんな文字たちを見かけたら、
文字化け = 文字コードの読み間違い
を疑いましょうね。
そんじゃあね!
浮動小数点数って聞くと、少し難しそうに感じるかもしれないけど、心配しないで。
わかりやすく解説するから、一緒に勉強していきましょう!
まずはイメージからいきましょう。
浮動小数点数とは、
大きい数も小さい数も効率よく表せる2進数の指数表現
のことよ。
実はこれ、みんながすでに知っている「科学記数法」と同じ考え方なの。
たとえば、
1530 = 1.53 × 10³
こんなふうに書けるわよね?
このとき、
という構造になっている。

つまり、
数 = 仮数 × 10の指数乗
なのよ。

コンピューターは10進数ではなく、2進数の世界で動いている。
だから、
数 = 仮数 × 2の指数乗
という形にするの。

例えば、15.125 を2進数にしてみましょうか。

まず10進数を2進数に変換するわ。
整数部分:
15 = 1111₂
小数部分:
0.125 = 0.001₂

だから、
15.125 = 1111.001₂

そして、浮動小数点では、必ず
1.xxxxx × 2ⁿ
の形に直すの。これを正規化(せいきか)というわ。
つまり、仮数(小数部分)の先頭が必ず 1 になる形にそろえるのね。
1111.001₂ を正規化すると、どうなるかしら??
左に3つ小数点を移動させて、2の3乗をかけた形にすればいいわね。

1.111001 × 2³
これが浮動小数点の基本形よ。

実際のコンピューターでは、32ビットをこう分けて保存するの。

0なら正、1なら負。
指数はそのまま入れない。
指数 + 127
を入れるのよ。
これを「バイアス」と言うわ。
今回の指数は3だから、
3 + 127 = 130
130を2進数にすると、
10000010₂
これが指数部になる。
正規化した形は、
1.111001
だったわね。
でもここで大事なポイントよ。
浮動小数点では、正規化すると必ず先頭は1になるの。
だから、その「1」はわざわざ保存しないのよ。これを隠れた1(hidden bit)っていうの。
つまり、保存するのは小数点の後ろだけ。
111001
ここまでが、実際に必要な情報ね。
でもね、仮数部は23ビットって決まっているの。
だから、ビットが足りない分はどうすると思う?
そう、右側を0で埋めるのよ(ゼロ埋め)。
11100100000000000000000
こうして23ビットにそろえるの。
後ろに数字がないのは、「それ以上の情報がない」という意味。
だから安心して0を並べていいのよ。
0 | 10000010 | 11100100000000000000000
これが 15.125 の32ビット浮動小数点表現よ。
そんじゃあね!
まずは基本からいきましょう。
符号ビットとは、
「その数がプラスかマイナスか」を表すための特別なビット
よ。
2進数で負の数を表すとき、一番左のビット(最上位ビット)に特別な意味を持たせるの。
「左端」が符号ビット、ってところがポイント!ね
たとえば、4ビットで考えてみましょう。
その場合、次のようになるわ。
つまり、
一番左のビットが 0 ならプラス
一番左のビットが 1 ならマイナス
というルールなのよ。

おっけー、じゃあ符号ビットがなんとくわかったところで、計算の例題解いてみましょうか。
2進法4桁で正負の整数を表現するとき、次の数を10進法に変換しなさい。
ただし、左端の1ビットは符号ビットである。
1010
左端が1ってことはマイナスね。
マイナスの時は補数をとってから10進法に直して、マイナス記号をつければOK。
1010の補数(4桁)を「補数の求め方」で求めると、
0110
になる!

これを10進数に直すと、
6
になるわね。(2進数から10進数への変換方法を使ってね)

符号ビットはマイナスだからマイナスの符号をつけて、
-6
はい、これでおっけ〜。
それじゃあ、またね!
まずは基本からね。
補数とは、
補数とは「足すと1桁増える数」になる相手のこと
よ。
まずは慣れ親しんだ10進数で考えてみましょう。
たとえば「37」。
これにいくつ足せば「100」、つまり一桁増えるかしら??
そう、63ね。
なぜなら、
37 + 63 = 100
になるから。つまり、63が「37の補数」なの。
今度は2進数で考えてみましょう。
「011」の補数は何になるかしら?

一緒に求めてみましょう。
次の2ステップを踏むといいわ。
まず、一桁増えた2進数の最初の数を探すの。
「011」は3桁だから、4桁の2進数の最初の数ってことね。
今回の場合、一桁増えた2進数の最初の数は
1000
になるわ。
だから、
011 + □ = 1000
になるような、□の数を求めればいいのね。この□が補数になるはずよ。
そのためには、
1000 – 011
すればいいわね。つまり、
(一桁増えた2進数の最初の数) - (元の2進数)
を計算するの。
えっ、引き算のやり方がわからない??
そんなときは2進数の引き算のやり方を復習してね。
ってことで、
1000 – 011
を計算すると、
101
になるわ。

したがって、「011」の補数は「101」よ!
ぶっちゃけ補数の求め方で肝は2進数の引き算ね。
繰り下がりのテクさえ身につけておけば計算できるはずよ。
でも、なぜ補数が重要なのかしらね??
めんどくさい計算やらすなって顔してるわね。
補数が重要な理由、それはズバリ、
コンピューターは引き算を得意ではないから
よ。
実はコンピューターの中では、基本的に「足し算」しかしていないの。
引き算専用の特別な回路を作るよりも、足し算の仕組みを使い回した方がシンプルだからよ。
そこで登場するのが補数。
補数を使うと、
A − B = A +(Bの補数)
の形に変えられるの。
つまり、減算を加算に変換できるというわけ。
ただし、ここで大事なポイント。
補数がきちんと機能するのは、同じビット数(同じ桁数)で計算しているときだけ
なのよ。
なぜなら、補数は
「そのビット数で表せる最大の値」を基準に作られているから。
3ビットなら 2³、
4ビットなら 2⁴、
というように、基準が変わってしまうの。
だからコンピューターは、
あらかじめビット数を固定した世界で計算しているのよ。
つまり補数とは、
「同じビット幅の世界で、引き算を足し算に変換するための魔法」
なの。
たとえば、さっきの
「011」の補数は「101」
で確かめてみましょうか。
110 – 011
をしたいときは、
110 + 011の補数
にする。
つまり、
110 + 101
ね。
これを計算すると、
1011
になる。

で、桁上がりの一番左の1を無視すれば、
011
になる。

これは
110 – 011
の計算結果と同じね。

補数は日常では差を求めたりする場面で利用されることが多いの。
例えば、差の計算やデータ通信でのエラー検出なんかにも補数は役立っているわ。
それじゃあ、またね!
2進数の引き算も、10進数と同じように右の桁から順番に計算していくわ。
まずは基本ルールね。
| 計算 | 結果 |
|---|---|
| 0 − 0 | 0 |
| 1 − 0 | 1 |
| 1 − 1 | 0 |
| 0 − 1 | 1にして、左の桁から1を引いて繰り下がる |
ポイントは
0 − 1
ね。
この場合は繰り下がりの手順が必要だから、計算ミスに要注意よ。
えっ、繰り下がりが難しそうですって??
大丈夫、慣れれば小学校で習ってきた筆算と同じように解けるはずよ。
では、実際にやってみましょう。
1101 − 1011
まずは縦にそろえるわよ。
1101
– 1011
——-

で、一番右の桁を計算。
1 − 1 = 0

そして、次の桁。
0 − 1
これはとりあえず1。
で、左の桁から1を引く。

すると、
1 0 0 1 – 1 0 1 1
になるわね。

次の桁は、借りた影響でその桁は0になっている。
0 − 0 = 0

一番左は、
1 − 1 = 0
ね。

よって、答えは
0010
つまり、
1101₂ − 1011₂ = 10₂
よ。
オッケー、2進数の引き算のやり方は以上ね。
| 計算 | 結果 |
|---|---|
| 0 − 0 | 0 |
| 1 − 0 | 1 |
| 1 − 1 | 0 |
| 0 − 1 | 1にして、左の桁から1を引いて繰り下がる |
2進数の引き算も、仕組みは10進数と同じ。
ぶっちゃけ、小学校で習ってきた10進数の筆算と同じ感覚ね。
そんじゃあね!
コンピューターの世界では、2進数が基本。
0と1しか使わないから、普通の算数とはちょっと違うわよね。
でも安心して、あたしと一緒に方法を学んでいきましょう!
まず、2進数の足し算の基本ルールを見てみましょう。
意外と簡単なのよ!
2進数の足し算では、3つの簡単なルールを覚えましょう。
どう?
このルールさえ押さえておけば大丈夫!
2進数の足し算では、1 + 1になるときに繰り上げが発生するの。
これは普通の10進数での繰り上げと同じで、次の桁に1を追加するだけ。
オッケー、それじゃあ早速手を動かしてみましょう。
次の問題に挑戦。
まず、筆算で計算しやすくするために縦に揃えるわよ。
11
+ 01
——

右から左に足しましょう。
最右の桁は、
1 + 1 = 10
になるから繰り上げね。

次の桁は1を下ろして1に繰り上げ足すから、
1 + 1 = 10
ここでまた繰り上げね。

結果は
$$100_2$$
になるわ。

もう一問いきましょう。
まず筆算で縦に揃える。
101
+ 110
——

で、最右の桁から計算。
1 + 0 = 1

次の桁は、
0 + 1 = 1
ね。

最左の桁は、
1 + 1 = 10
で繰り上げ発生。

よって結果は、
$$1011_2$$
よ。

それじゃあね!