arbeiten mit bits und mengen



  • Nabend,

    ich muss etwas mit bits erstellen und habe folgende zeile:

    Set[i] = Set[i] | (1 << (Element - (i*32)));

    Wie kann ich diese Zeile besser schreiben, die sieht so lang aus, ich denke da gibst ne bessere lösung. und wie kann ich diese, bzw.dann die verbesserte zeile jemanden erklären, der von bist keine ahnung hat.

    dermold



  • Also das jemandem zu erklären, der von Bits keine Ahnung hat, das wird wohl sehr schwer werden.

    Hier mal die kürzere Form der Zeile, die aber noch das selbe tut:

    Set[i] |= 1 << (Element - (i*32));
    

    Ich nehme mal an, dass das ganze innerhalb einer for-Schleife abläuft (wegen dem i) und dass Element eine Variable ist (irgendein int oder so) (btw. Variablennamen sollten mit Kleinbuchstaben beginnen)

    Diese Zele macht nun folgendes:
    Sie multipliziert i mit 32 und zieht das von Element ab. Dann wird 1 um Element nach links geshiftet und das wird dann mit Set[i] Oder-Verknüpft. (Auch hier sollte es set[i] heißen)

    Binär sieht das ganze dann so aus (für i = 2, Element = 69 und Set[i] = 25)
    i = 00000010
    Element = 01000101
    Set[i] = 00011001
    -----------------
    Element-(i*32) = 5
    Shift:
    1 << 5 = 00100000
    -----------------
    Oder:
    00011001 //Set[i]
    00100000
    ________
    00111001 = 57

    Näheres zu den Bitoperationen findest du in jedem guten Java-Buch und im Internet zuhauf.

    [ Dieser Beitrag wurde am 25.05.2003 um 10:49 Uhr von destruct0r editiert. ]


Anmelden zum Antworten