n進数#2 2の補数、演算子

ichikawa です。n進数について、2回目の授業です。

本日習った内容は、

  • 負の2進数
  • 2の補数の計算
  • ビット演算子

です。
まずは負の2進数。
コンピュータがどのようにして負の数字を解釈しているのか、勉強しました。

4ビットの値の時、例えば2進数1100のように4ビット目が1だと、 4ビット目だけ数字がマイナスになります。1000は10進数で -8 になります。この例の値を10進数に直すと、3ビット目も1であるので、 -8 + 4 で4になります。つまり2進数の4ビットだと10進数で -8 〜 +7 まで表すことができます。

8ビットの 値の時、8ビット目が1だと、10000000は10進数で-128となります。10001010のような2進数ならば、-128 + 2 + 8で 118 であります。8ビットでは -128 〜 +127 までの 数字が表せられます。

32ビットの値の時、32ビット目が1だと、ここは 10進数で -2147483648 となります。ここまでくると筆算ではなかなか計算できないので、前回の講義のようにphpを使って計算しました。

次に2の補数の計算の仕方について

まず2進数だと、50 は 0110010 と表せられます。
これの補数を求めます。筆算になるのですが、 1 と 0 を逆転させて、 1 ビットを付け足し、1を足せば補数になります。
どういうことかと言いますと

0110010

これを逆転
1001101
1を足す
1001110
これを計算すると

-64 + 8 + 4 +2 =-50

となります。以上です。

今日はビット演算子についても習いました。

以下Aというビット値

「1101」

とBというビット値

「1000 」

があるとします。
これを例にして、ビット演算子を説明します。

●AND
これはAとBの両方に1がセットされているビットに、ビットを立てます。ほかは0です。これは以下すべての演算子に適用します。

A 1101

B 1000

結果

1000

●OR
これはAまたはB のどちらかに1がセットされているビットに、ビットを立てます。

A 1101

B1000

結果

1101

●XOR
これはAまたはBに1がセットされており、 かつ両方にはセットされていないビットにビットを立てます。

A 1101

B 1000

結果

0101

●否定
これはビットを反転します。

A 1101 → 0010

B1000 → 0111

今回習ったのは以上でした。実際どんなところで使われるかは、まだ教わっていませんが、今回は概念を学ぶことができました。

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree