Frank: Bitweise Negation

Hi,
wie funktioniert das genau mit der bitweisen Negation?

Kann mir z.B. jemand das Ergebnis von folgender Operation erklären:

~8 = -9

Ich seh da:
~1000 = 0111 = 7

Das Minus kann ich mir ja noch vorstellen, bei einer 32-bit Zahl, ist das erste Bit für das Vorzeichen. Was aber passiert dann mit den ganzen Null-Bits dazwischen, wenn ich es mit der 8 mal genau nehme:

8 = 00000000000000000000000000001000

Hier steh ich auch dem Schlauch...

1000 Dank :-)

  1. Hallo,

    wie funktioniert das genau mit der bitweisen Negation?

    so wie es sich anhört: Alle Bits werden negiert, also umgekehrt.

    ~8 = -9
    Ich seh da:
    ~1000 = 0111 = 7

    Da hast du dich mit deiner Erklärung selbst verarscht, indem du die Wortbreite zu klein gewählt hast. ;-)
    Wenn du in nur 4 Bits vorzeichenbehaftete Zahlen im Zweierkomplement darstellen möchtest, dann ist 8 schon außerhalb deines Zahlenbereichs. Denn wie du richtig dargestellt hast, wäre 8 = 1000b. Da ist aber das höchste Bit schon gesetzt, dieser Binärwert ergibt bei der Rückwandlung eigentlich -8.
    Nehmen wir lieber mal 8 Bits, dann klappt dein Zahlenbeispiel auch, denn mit 8 Bit kann man in Zweierkomplementdarstellung den Zahlenbereich -128..+127 darstellen.
    Dann ist

    8 = 0000 1000b = 08h
     ~8 = 1111 0111b = F7h

    Und 1111 0111b entspricht in dezimaler Darstellung tatsächlich -9. Das kannst du jetzt auch noch auf 16 oder 32 Bit erweitern, meinetwegen auch auf 64, es passt in jedem Fall.

    Das Minus kann ich mir ja noch vorstellen, bei einer 32-bit Zahl, ist das erste Bit für das Vorzeichen. Was aber passiert dann mit den ganzen Null-Bits dazwischen, wenn ich es mit der 8 mal genau nehme:
    8 = 00000000000000000000000000001000

    Ist doch klar:
      ~8 = 11111111111111111111111111110111

    Jetzt besser mit dem Schlauch?

    So long,
     Martin

    --
    Wenn zwei dasselbe tun, sind sie vielleicht bald zu dritt.
    1. Jetzt besser mit dem Schlauch?

      Jop, hab auch noch mal in Wikipedia reingeschaut zwecks Zweierkomplement, jetzt raff ichs langsam :-)

      Danke für Deine Erklärung, das konnte ich ganz gut nachvollziehen :-)

      Komme halt nicht direkt aus der Informatik, hihi.

      Viele Grüße,
      Frank