dポイントプレゼントキャンペーン実施中!

11110100を全ビット反転して1を足すと00001100となるらしいですが、
なぜですか?

やり方も含めて教えてください‼️

A 回答 (4件)

機械的にやればそうなりますよ。



それと「どうしてそれが元の数の負数表現になるのか」というのは別問題です。

試しに
・元の数:1111 0100[2]

・得られた数:0000 1100[2]
を加えてみれば

 1111 0100[2] + 0000 1100[2]
= 1 0000 0000[2]          ①

になります。
2進数を「8ビット」に限定すれば、①の最上桁(9桁目)は「桁あふれ(オーバーフロー)」して消滅するので、「8ビット2進数」の答としては「0」になります。

(つまり
  1111 0100[2] + 0000 1100[2] = 0000 0000[2]
ということ。計算機の8ビットレジスター上ではこんな計算になる)

つまり「足して結果が 0 になるのは、互いに符号の異なる数(絶対値は等しい)である」ということになるわけです。
(上の例では、最上ビットから「元の数:1111 0100[2]」を負数、「得られた数:0000 1100[2]」を正数とするのがふつうです)
    • good
    • 0

11110100


の全ビット反転は
00001011
00000001を足すと
--------------------筆算すると
00001100
    • good
    • 0

11110100を全ビット反転


00001011
+    1
----------
00001100

何でやねん?
2進数11(10進数3)に1を足すと100(10進数4)になるから。

よう知らんけど。
「11110100を全ビット反転して1を足」の回答画像2
    • good
    • 0

全ビット反転→00001011


1を足す→00001100
    • good
    • 2

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