重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

(13)10-(10)10の計算をしたいのですが、いまいち分かりません。教えてください。
(13)10=(00001101)2 ・・・・(1)
(-10)10=(11110110)2 ・・・・(2)
(1)+(2)=(100000011)2 
となり、先頭の数が1なので負となり・・(-3)10てことではないですよね?13-10=3ですよね(十進数の)?

(10000011)2を(0111111100)2にして1をたして
(01111111101)2にまた直しても答えの(3)10にはなりませんよね?

A 回答 (3件)

2の補数法での計算では


8ビットだけで考えますので、9ビット目への桁あふれは考えません。
>(1)+(2)=(100000011)2
でなくて9ビット目を除いた
(00000011)2=3
が解になります。
このことが負数か2の補数で表現する計算法に起因します。
>(-10)10=(11110110)2 ・・・・(2)
この負数(-10)10が正の2進数の減算では
(100000000)2-(00001010)2 
=(011110110)2 =(11110110)2
という正の2進数で定義されているわけです。
つまり2の補数法では負数は9ビット目の1、つまり
(100000000)2を前借りしていることになります。
この前借りが「2の補数法での減算で出てくる9ビット目の桁上げ」
で借りがなくなり9ビット目が「0」になるという事です。
このことを2の補数法では、単に「9ビット目は桁あふれとして
無視すればいい」という事なのです。
    • good
    • 0

>先頭の数が1なので負となり


これが間違い。1なのは9ビット目なので桁あふれで消える

00000011 ←8ビット目は0だから正。よって2+1=3
    • good
    • 0

(13)10=(00001101)2


(10)10=(00001010)2
(00001101)2-(00001010)2=(00000101)2=(3)10ではダメなんですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!