-         

Ergebnis 1 bis 4 von 4

Thema: Was ist der Unterschied zwischen &= |= und der vorg. Til

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    18.08.2005
    Beiträge
    86

    Was ist der Unterschied zwischen &= |= und der vorg. Til

    Anzeige

    Hallo zusammen,

    ich habe hier ein Programm, welches ich als erstes Projekt für einen Mega64 übernehmen will.

    Nun sind da diese Operatoren und ich weiss nicht, wie diese so funktioniren.

    Laut dem AVR-GCC Tutorial konnte ich folgendes lesen:

    x |= (1 << Bitnummer); // wird ein Bit in x gesetzt
    x &= ~(1 << Bitnummer); // wird ein Bit in x geloescht

    Nun, das erste Beispiel ist logisch.
    Ich mache eine ODER-Verknüpfung mit einem Bestimmten Bit und egal was vorhin drinstand, 1 ODER 1 = 1 und somit wird der Bit gesetzt.

    Nun verstehe ich das zweite Beispiel nicht.
    Warum wird eine 1 negiert (ich vermute, das die Tilde negiert!), und dann mit UND Verknüpft? Kann man denn nicht gleich eine Null nehmen?
    Also x &= (0 << Bitmuster) ???

    Und jetzt die Meisterfrage ;o) Wie ist denn der Syntax zu verstehen; Also wie liest man den Befeht richtig? Für welchen deutschen Ausdruck stehen denn die << Zeichen.

    Danke im Voraus und Grüße

    popi[/url]

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    << = Bitweises schieben links
    >> = Bitweises schieben lrechts
    deswegen ist auch (0<<zahl) sinnlos: einen nuller kannst du nicht schieben, der bleibt null. Null-mal schieben ist aber ok.
    (1<<0) = 00000001
    (1<<1) = 00000010
    (1<<2) = 00000100
    ...
    (1<<7) = 10000000
    Beispiel (x=0):
    x |= (1<<2) 0 oder 4 --> 4

    Beispiel (x=FF):

    x &= ~(1<<2)

    1: (1<<2) --> 0000010
    2: ~(1<<2) --> 11111011
    3: in x bleiben nur die Bits über, die in beiden werten auf 1 stehen, logo

    hilft das ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    hast DU schon gesucht wie das logische AND funktioniert ?

    Wenn Du nur ein Bit löschen willst, müssen alle andern auf 1 sein, damit sie unverändert bleiben !
    Am einfachsten geht das, wenn man ein Bit setzt, mit (1 << Bitnummer) und dann das ganze negiert, denn dann ist das eine Bit 0 und alle anderen 1.

    Das << ist ein Shift Left, also verschieben nach links.
    Eine 1 ist im Bit ganz rechts, deshalb wird hier immer nur nach links verschoben.

    Wenn man allerdings eine 0 um eine gewisse Anzahl stellen nach links schiebt, bleibt das 0.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    18.08.2005
    Beiträge
    86
    Ich danke Euch für erste...

    Ich habs verstanden.
    Schön erklärt, vielen Dank!

    Werde jetzt ein bißchen damit rumprobieren.

    Liebe Grüß

    popi

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •