• 締切済み

8桁の二進数の引き算

(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にはなりませんよね?

みんなの回答

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.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ビット目は桁あふれとして 無視すればいい」という事なのです。

回答No.2

>先頭の数が1なので負となり これが間違い。1なのは9ビット目なので桁あふれで消える 00000011 ←8ビット目は0だから正。よって2+1=3

noname#74443
noname#74443
回答No.1

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

関連するQ&A