なぜプログラムは動くのかもうちょっとつっこんで書いてみます.
コンピュータは2種類のデータですべてやり取りしています.通常それは0と1で表されます. 電子回路的には-1と1で表すこともありますが同じことです.
2進数は0と1で表します.でもまじ32bitとかなると長すぎて意味不明だから16進数で表すことも多いです.計算の仕方は勉強してください.
論理代数を参照.ばりばり使います.
回路図は加算器-wikipediaを参照.
半加算器は2進数1桁同士の足し算をする回路です.超簡単な計算器ですね.論理代数を勉強したなら真理値表は自分で書けるでしょう.やってみてください.
真理値表 |
A | B | C | S |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
答えはこうです.Cは答えで,Sは繰り上がりです.
0+0=0
0+1=1
1+0=1
1+1=0で繰り上がり
分かりますか?1+1=10なので答えは下1桁になり0で繰り上がりです.ちゃんと2進数で考えてくださいね.
ちなみに電気屋さんでANDとかORとか売ってるので乾電池とスイッチとLEDつなげれば動くと思いますよ.
さて半加算器は繰り上がりが考慮されてないので複数の桁を計算させたい時にダメですね.さすがに1bitじゃなにもできんwww.ということで繰り上がりを考慮した回路が全加算器です.簡単なので余裕があれば真理値表から回路を書いたりしてみてください.
真理値表 |
A | B | X | C | S |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
AとBが入力 Xが繰り上がり Cは答え Sは繰り上がりです.
筆算の繰り上がりをイメージしてください. 一番最後は1+1で繰り上がりがあって1+1+1=11になります.なので答えが1になってさらに繰り上がります.
今の計算機のintはだいたい32bitなのでこれを32個繋げば整数の計算できそうですね.以上長簡単なCPUの作り方でした.
引き算は足し算に直して計算できます.解説めんどくせー
今までの回路の出力部分にLEDをつなげれば2進数でそのまま結果を表示できます.それじゃ読みにくいので 7セグ-Wikipedia を使ってみましょう.1個100円くらい.パソコンのディスプレイに相当するものとして考えて見ましょう.
7セグは7本線があり(点とかあったりするけど),入力があったところが光ります.1を入れれば光ります.この回路をデコーダとか 言ったりします(エンコーダだったっけ?)
まず表示する数字は10進1桁の数字です.なので2^4=16で4bitの入力があればよさそうです.
出力は7セグなので7bitです.これでまず真理値表を書いてみましょう.多くてめんどくさーーーーーい
真理値表 |
a | b | c | d | A | B | C | D | E | F | G |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
めんどくさい 残り誰か作って
abcdは4bitの入力 ABCDEFGは7セグへの出力.Wikipediaの図に相当します.
入力に ディップスイッチ などを繋げば立派なディスプレイ付きコンピュータの完成です!www
これまでの回路を組み合わせ回路といいます.でもこれではメモリがありませんねー.そこでフリップフロップというもの使いましょう.これは1bitだけ記憶できる回路です.