2016-12-12 2 views
0

Ich lese (here) und überprüft (mit einem Computer), dass -~x zu x+1 und ~-x gleich x-1 gleich ist, so habe ich versucht, es aufzuschreiben und sehen, was passiert ist, aber ich bin etwas falsch zu machen.Wie funktionieren - ~ x und ~ -x?

die x=4

0100 // 4 in binary, leading 0 for the sign 
1100 // the inverse of the addition 
0011 // ~ complement 

0011=3 nehmen lassen, die nach dem von der Regel ~-x === x-1

Aber für -~x bekomme ich das gleiche:

0100 // 4 in binary 
1011 // ~ complement 
0011 // the inverse 

Wo finde ich falsch? Bin ich dumm?

Antwort

0

OK das Problem war meine Darstellung von negativen Zahlen. Ich muss die Two's complement Operation verwenden und dann gibt es das korrekte Ergebnis zurück. So -~x verhält sich wie:

0100 // 4 (we assume a 4 bit number without taking sign into account) 
1011 // complement which is 11 

Und jetzt Zweier-Komplement mit:

Das Zweierkomplement eines N-Bit-Zahl ist definiert als das Komplement in Bezug auf 2 N; mit anderen Worten, es ist das Ergebnis der Subtraktion die Zahl von 2N.

In diesem Fall N=4 und 2^N = 16 und schließlich, wenn wir 11 von 16 subtrahieren bekommen wir 5, die x+1 ist. Wir haben gezeigt, dass -~x === x+1

Verwandte Themen