2の補数について勉強しています。 2の補数の考えかたは理解できたのですが、表現が普通の8ビットなのか補数を使った表現なのかはどこで分かりますか?

プログラミング | C言語関連66閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

1

1人がナイス!しています

その他の回答(5件)

0

それは「自分の頭の中で区別すること」であって、「判断する」ようなことではありません。 そもそも2の補数表現を使うというのは、「キャリーフラグを無視すれば加算命令・減算命令どっちかひとつで済んじゃうよね?」という話なのですから、「使う側=プログラマ」が把握できていなければオカシイ話です。

0

「2の補数の考え方は理解できた」とありますが、次の2つの理由から、その理解は十分ではありません。 理由のア.を重視するなら、間違って理解しているかも。 ア.Hermitさんの言う通り、10000001は2の補数形式で表した10進数「ー1」ではありません。 イ.本当に、「負値を2の補数で表す考えかたを理解できた」なら、このような質問は出ないはず。

0

前述の回答どおり、使う人間(コンパイラー)の解釈によります。 何故、2の補数を使うかは、理由があります。 それは、CPUに負数の計算のためのマイクロコード、若しくは回路が少なくてすむからです(あるいは負数計算用の回路は無用)。その結果、計算が高速になります。 ちなみに、2の補数を使用しないCPUも存在します。あるメインフレームはこのCPUを使用しています。

1

どこかに文章で書いて無い限り分からないと思います。 (1000 0001) = -1 は、2の補数表現じゃなく、符号属性付きの数値表現ですし。 https://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE#%E7%AC%A6%E5%8F%B7-%E4%BB%AE%E6%95%B0%E9%83%A8

1人がナイス!しています