(3) 1バイトの2進数の 10進数表示 と 16進数表示
-
10進数
1バイト2進数
16進数
9
1001
9
10
1010
A
15
1111
F
16
10000
10
17
10001
11
30
11110
1E
32
100000
20
33
100001
21
255
11111111
FF
-
「 10進法で15までの自然数2個の足し算 」 を、 第2次世界大戦頃の原始的な電子計算機を使用するという設定で、 行ってみます。 この仮想の電子計算機には 「 ( 縦に3列 )
( 横に 4個 − 1個 − 4個 ) の9個のスイッチ 」 と 「 横に並んだ5個の電球 」 がついています。 電子計算機の本体は、 プログラムを実行する 「 複合論理回路 」 です。 その頃の電子計算機では、 トランジスタの代わりに真空管が使われています。10進法で5の数を、 2進法で表示してみます。

この数を電子計算機で表現するならば、 右から3番目と一番右の電球を ON にし、 その他の電球を OFF にします。
10進法で3の数を、 2進法で表示してみます。

この数を電子計算機で表現するならば、 一番右と右から2番目の電球を ON にし、 その他の電球を OFF にします。
10進法で8の数を、 2進法で表示してみます。

この数を電子計算機で表現するならば、 左から2番目の電球を ON にし、 その他の電球を OFF にします。
を2進法で表示すると、 次のようになります。
これを電子計算機で表示すると、 次のようになります。

2進数の
・
、 スイッチの ON ・ OFF 、 真偽の
・
は、 次のような関係になっています。
半バイト2進数の加法のプログラムイメージ
Main ( )
{{{{{
< Input ( A4, A3, A2, A1, Z, B4, B3, B2, B1 ), Output ( L5, L4, L3, L2, L1 ) >
< Used function = Plus ( ) or Minus ( ) >
Input ON or OFF for A4, A3, A2, A1, respectively ; Return
Input ON or OFF for Z ; Return /* 加法は OFF 、 減法は ON を入力
Input ON or OFF for B4, B3, B2, B1, respectively ; Return
If Z = ON, then
Output L5 ;
}}}}}
Plus ( )
{{{{{
< Input ( X4, X3, X2, X1, Y4, Y3, Y2, Y1 ), Output ( P5, L4, L3, L2, L1 ) >
If And ( X1, Y1 ) is ON, C2 = ON, not if, OFF.
If And ( X2, Y2 ) is ON, C3 = ON, not if, OFF.
If And ( X3, Y3 ) is ON, C4 = ON, not if, OFF.
If And ( X4, Y4 ) is ON, C5 = ON, not if, OFF.
If Difference referee ( X1 , Y1 ) is ON, XY1 = ON, not if, OFF.
If Difference referee ( X2 , Y2 ) is ON, XY2 = ON, not if, OFF.
If Difference referee ( X3 , Y3 ) is ON, XY3 = ON, not if, OFF.
If Difference referee ( X4 , Y4 ) is ON, XY4 = ON, not if, OFF.
If And ( C2, XY2 ) is ON, D3 = ON, not if, OFF.
If And ( C3, XY3 ) is ON, D4 = ON, not if, OFF.
If And ( C4, XY4 ) is ON, D5 = ON, not if, OFF.
If Difference referee ( C2 , XY2 ) is ON, XYC2 = ON, not if, OFF.
If Difference referee ( C3, XY3 ) is ON, XYC3 = ON, not if, OFF.
If Difference referee ( C4, XY4 ) is ON, XYC4 = ON, not if, OFF.
If And ( D3, XYC3 ) is ON, E4 = ON, not if, OFF.
If And ( D4, XYC4 ) is ON, E5 = ON, not if, OFF.
If Difference referee ( D3, XYC3 ) is ON, XYCD3 = ON, not if, OFF.
If Difference referee ( D4, XYC4 ) is ON, XYCD4 = ON, not if, OFF.
If And ( E4, XYCD4 ) is ON, F5 = ON, not if, OFF.
If Difference referee ( E4, XYCD4 ) is ON, XYCDE4 = ON, not if, OFF.
If Or ( C5, F5 ) is ON, P5 = ON, not if, OFF.
L4 == XYCDE4 ;
}}}}}
※ 参照: 十進BASIC > 十進BASIC_プログラミング > 論理演算で2進数加法
-
「 10進法で15までの自然数 ( 0を含む ) しか存在しない 」 という条件下での引き算を、 原始的な電子計算機を使ってやってみます。
を 4ビット ( 半バイト ) の2進法で表示すると、 次のようになります。

「 半バイト2進数の2の補数 」 は、 「 半バイト2進数のアウフハーベン数 10000 に関しての補数 」 と言う方が、 解りやすくていいの
ではないかと、 私は思います。 「 2の補数 」 は、 2進数の
と 
を置き換えた 「 2進数の1の補数 」 に
を加えたものです。
補数とは、 元来、 ある自然数に加えたときに1桁以上増す数のうち最も小さい数のことです。 したがって、 本来は、 2進数 11 の補数といえば、 1 になり、
2進数 10 の補数といえば、10 になります。
「
進数
の補数 」 のことを 「
進数
の
の補数 」 とも言います。「
進数
の
の補数 」 とは、「
進数
の
の補数 」 から
を引いた数です。 したがって、10進数 10 の 10 の補数 といえば、 90 になり、
10進数 10 の9の補数 といえば、89 になり、 2進数 10 の 2の補数といえ
ば、10 になり、 2進数 10 の1の補数 といえば、1になります。
を電子計算機で表示すると、 次のようになります。
半バイト2進数の減法のプログラムイメージ
Main ( )
{{{{{
Plus ( )
{{{{{
までは、 加法の時と同じです。
Minus ( )
{{{{{
< Input ( X4, X3, X2, X1 , Y4, Y3, Y2, Y1 ), Output ( L5, L4, L3, L2, L1 ) >
< Used function = Plus ( ) >
M4 == Not ( Y4 ) ;
If Y1 is OFF, C2 = ON, not if, OFF.
If And ( C2, M2 ) is ON, D3 = ON, not if, OFF.
If Difference referee ( C2 , M2 ) is ON, M21 = ON, not if, OFF.
If And ( D3, M3 ) is ON, E4 = ON, not if, OFF.
If Difference referee ( D3 , M3 ) is ON, M31 = ON, not if, OFF.
If Difference referee ( E4 , M4 ) is ON, M41 = ON, not if, OFF.
Plus ( A4, A3, A2, A1, M41, M31, M21, Y1 )
L5 == Not ( P5 ) /* 必ず L5 は 0 になります。
}}}}}
※ 参照: プログラミング > 2進数の足し算引き算
論文の最初へ戻る