(続き)
・半加算器
A,Bの2つの入力と、S(その桁の出力)、C(繰り上がり)で出来ています。
0ビット目は半加算器のSで出力します。
自作命令で表すと、
DEF HARF_ADDER A%,B% OUT S%,C%
S%=A% XOR B%
C%=A% AND B%
END
になります。
論理演算で出来ています。
なので、前回までの内容が理解出来ていれば、
wikiなどを見ながら作れると思います。
・全加算器
A,B,X(前ビットからでた繰り上がり)の3つの入力と、S(その桁の出力)、C(繰り上がり)で出来ています。
1ビット目以降は全加算器のSで出力します。
自作命令で表すと、
DEF FULL_ADDER A%,B%,X% OUT S%,C%
VAR S1%,S2%,C1%,C2%
HARF_ADDER A%,B% OUT S1%,C1%
HARF_ADDER S1%,X% OUT S2%,C2%
S%=S2%
C%=C1% OR C2%
END
になります。
・加算器
ビット列1,2を足します。
入力はA(ビット列1),B(ビット列2)の2つで、出力はO(加算したビット列)です。
自作命令で表すと、
DEF ADDER(A%,B%)
VAR N%,S%,C%,O%
HARF_ADDER A% AND 1,B% AND 1 OUT S%,C%
O%=S%
FOR N%=1 TO 30
FULL_ADDER A%>>N% AND 1,B%>>N% AND 1,C% OUT S%,C%
O%=O%+S%*POW(2,N%)
NEXT
RETURN O%+C%*POW(2,31)
END
になります。
今回のまとめ
・論理演算で足し算ができる!
次回の予定はまだありませんが、予定が立ったらお知らせします。
また、リクエストがありましたら、出来る範囲で書こうと思います。