Iが1(〜1)を補うとき、出力は-2となります。これは内部的にどのように行われますか?2進数を補完する
私はまず、ビットが反転していると仮定して0001が1110になり、1が加算されて1111になります。
Iが1(〜1)を補うとき、出力は-2となります。これは内部的にどのように行われますか?2進数を補完する
私はまず、ビットが反転していると仮定して0001が1110になり、1が加算されて1111になります。
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
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.
そしてビット補完、Cで '〜'。 –
FWIWを追加することによって作成された効果で '-'オペレータはあなたが記述したものを正確に行います。 2の補数をとります。 '〜'演算子を使っても、それは冗長になります。 – geoffspear
ありがとう....行くそれ – Akash