2012-01-05 14 views
1

Iが1(〜1)を補うとき、出力は-2となります。これは内部的にどのように行われますか?2進数を補完する

私はまず、ビットが反転していると仮定して0001が1110になり、1が加算されて1111になります。

+0

FWIWを追加することによって作成された効果で '-'オペレータはあなたが記述したものを正確に行います。 2の補数をとります。 '〜'演算子を使っても、それは冗長になります。 – geoffspear

+0

ありがとう....行くそれ – Akash

答えて

3

1 == 0b00000001 
~1 == 0b11111110 

そして、それはだ-2コンピュータが内部で負の数を表している方法である2の補数、中:あなたは1を補完すると、あなただけのビットを反転させて行きます。 http://en.wikipedia.org/wiki/Two's_complementを参照してくださいが、ここでいくつかの例があります: "私は1(〜1)、補完するとき" を

-1 == 0b11111111 
-2 == 0b11111110 
.... 
-128== 0b10000000 
+127== 0b01111111 
.... 
+2 == 0b00000010 
+1 == 0b00000001 
0 == 0b00000000 
1

Wharあなたは意味ですか? というものがあり、そのうち補語があり、というものがあります。補足です。ポーズ番号と同じアルゴリズムを使用して負数を加算したり引いたりすることができるため、Twos-Complementがより一般的です(ほとんどのコンピュータで使用されています)。

2の補数をポジティブ数のバイナリ表現を取り、1から0にし、0から1までのすべてのビットを切り替え、その後、1

5 0000 0101 
4 0000 0100 
3 0000 0011 
2 0000 0010 
1 0000 0001 
0 0000 0000 
-1 1111 1111 
-2 1111 1110 
-3 1111 1101 
-4 1111 1100 
-5 1111 1011 
etc. 
+0

そしてビット補完、Cで '〜'。 –