#この記事について
プログラミング学習の基礎づくりのため、基本情報技術者の参考書で学習したことを記録しています。
今回はコンピュータの回路についてまとめました。
2,3,4章では、演算結果が1になる入力を縦にペアができるように記述しています。
##1.目次
1.目次
2.論理演算
3.論理回路
4.加算器
5.ビット操作
##2.論理演算
論理演算とは、1を真(True)、0を偽(False)とみなして行う演算。ベン図を用いると考えやすい。
AとB、二つの条件があると仮定して、基本的なものを以下に示す。
###論理積(AND)
「AかつB」の場合を示す。
A:1
B:1
###論理和(OR)
「AまたはB」の場合を示す。
A:0,1,1
B:1,0,1
###否定(NOT)
「Aではない」の場合を示す。
A:0,0
B:0,1
##3.論理回路
論理演算を行う回路。
###基本回路
上述の3種類の論理演算それぞれを行う回路。
###否定論理積(NAND)
ANDとNOTを組み合わせた回路。ANDと逆の出力をする。
A:0,0,1
B:0,1,0
###否定論理和(NOR)
ORとNOTを組み合わせた回路。ORと逆の出力をする。
A:0
B:0
###排他的論理和(EORまたはXOR)
AとBのうち、片方だけの場合に演算結果が1となる回路。
A:0,1
B:1,0
##4.加算器
2進数の加算を行う回路を加算器という。論理回路を利用する。
###半加算器
下位からのくり上がりを考慮しない加算器。1桁目の計算で用いられる。
2桁目を出力C、1桁目を出力Sとする。
出力C
A:1
B:1
→ANDと同じ
出力S
A:0,1
B:1,0
→EORと同じ
したがって、半加算器はANDとEORを組み合わせた回路と言える。
###全加算器
下位の桁からのくり上がりも考慮した加算器。2桁目以降の計算で用いられる。
入力として、A,Bに下位からのくり上がりC'を加えて考える。
そうすると、
A+Bをする半加算器(出力をC1,S1とする)
S1+C'をする半加算器(出力をC2,S2とする)
C1とC2どちらかでしかくり上がりは起きないので、
C1 OR C2 とする(出力をC3とする)。
演算結果としては、C3,S2 でわかる。
このように、全加算器は半加算器2つとORで構成される。
##5.ビット操作
引き算をするために2の補数を作ったり、浮動小数店を扱うためにビットを取り出したりする際に
ビット操作が必要になる。これは、論理演算が利用できる。
###ビットの反転
排他的論理和(EORまたはXOR)を用いる。
反転させたいビット列をA = 00000011 とする。
1.反転させたい位置に1を入れたビット列A'(マスクパターンという)を用意する。
A' = 11111111
2.A EOR A'をとる
A00000011
A' 11111111
AとA'どちらかだけが1の時に、1を出力するので
演算結果は
11111100
となる。
###ビットを取り出す
ビットを取り出す場合は、論理積(AND)を利用する。
対象となるビット列をB = 01101011 とする。
1.取り出したい位置に1を入れたビット列B'をマスクパターンとして用意する。
下4桁を取り出すと仮定して、B' = 00001111 とする。
2.B AND B' をとる
B 01101011
B'00001111
BとB'どちらも1の時に、1を出力するので、
演算結果は
00001011となり、指定したビットを取り出すことができる。