PR

【科目A】《基礎理論》(サンプル6-問1)ビット操作アルゴリズム

問題

 負数を2の補数で表すとき、8ビットの2進整数 n に対し -n を求める式はどれか。ここで、+ は加算を表し、ORはビットごとの論理和、XORはビットごとの排他的論理和を表す。

ア (n OR 10000000) + 00000001

イ (n OR 11111110) + 11111111

ウ (n XOR 10000000) + 11111111

エ (n XOR 11111111) + 00000001

解答 エ

2の補数

負の数を表すには、2の補数で表現します。2の補数を行うには、以下の手順になります。

①まず、ある数値Aに対して、Aの全てのビットを反転させる。
例)A=00001011(10進数ではA=11)であったなら、A=11110100とする。

②反転させたAに対して、1を加える。
例)反転させたA=11110100に1を加える。A=11110100 + 1 = 11110101

上の例)では、A=11110101(10進数ではA=-11)が2の補数になり、最初のA=00001011(10進数ではA=11)の負の数となります。

 

ある数nに対する2の補数(-n)を行う過程を論理式で表すと、以下になります。

①②nと11111111の論理和(XOR)を求めて、1を加える。
A = (n XOR 11111111) + 00000001

タイトルとURLをコピーしました