Bits genau setzen ?



  • Das kann ja nicht stimmen oder?

    p[(Nr-1)/32] = p[(Nr-1)/32] | (1<<( (Nr-1)%32 ));
    

    Klar stimmt das so, warum auch nicht? [/quote]

    p[(Nr-1)/BITS] &= ~(1<<((Nr-1)%BITS));
    

    das wäre dann auch richtig?

    p[(Nr-1)/BITS] = p[(Nr-1)/BITS] & ~(1<<((Nr-1)%BITS));
    


  • Wenn ich jetzt keinen Tippfehler übersehen habe, ja.



  • Pelle schrieb:

    unsigned int iLagerplaetze[4]; // 128 Bits
    int temp;
    

    Na, mit Sicherheit NICHT 128 Bit ... eher hatte da jemand 128 Bit intus 😃
    Was machst Du Dir Gedanken um den Platz von 128 Bit oder Byte und willst an Bits frickeln, wenn Du dann auf diese Weise Speicher vergeudest.😕
    Mit den Mehrfachdivisionen

    p[(Nr-1)/32] = p[(Nr-1)/32] | (1<<( (Nr-1)%32 ));
    

    verläßt man sich auf die Optimierung des Compilers, aber es gibt wirklich welche, die (Nr-1)/32 mehrfach ausrechnen.:p

    Performance dahin, kaum Platz gespart ... *keine gute Idee*, nur um nicht Schwachsinn 😮 sagen zu müssen



  • pointercrash() schrieb:

    Performance dahin, kaum Platz gespart ... *keine gute Idee*, nur um nicht Schwachsinn 😮 sagen zu müssen

    eben drum, ich hatte weiter oben ein paar schicke macros gepostet (zwar mit flüchtigkeitsfehlern drin), aber davon will ja keiner was wissen.
    🙂



  • macro-troll schrieb:

    eben drum, ich hatte weiter oben ein paar schicke macros gepostet (zwar mit flüchtigkeitsfehlern drin), aber davon will ja keiner was wissen.
    🙂

    doch, ich ! 🙂

    und zwar wieso &3 den selben wert wie %4 liefert.
    kann man das irgendwie mathematisch zeigen ?
    also im moment komme ich nicht drauf wie. 😕



  • macro-troll-fan schrieb:

    kann man das irgendwie mathematisch zeigen ?

    ich kanns zwar nicht mathematisch zeigen, aber im binärsystem funzt dieses speed-modulo auch nur mit zweierpotenzen. alle stellen rechts vom teiler müssen 0 sein, dann isses ohne rest teilbar. in anderen zahlensystemen ist es ja so ähnlich, also im zehnersystem bei allen teilern, die selber glatt durch die basis teilbar sind usw...
    🙂



  • macro-troll-fan schrieb:

    macro-troll schrieb:

    eben drum, ich hatte weiter oben ein paar schicke macros gepostet (zwar mit flüchtigkeitsfehlern drin), aber davon will ja keiner was wissen.
    🙂

    doch, ich ! 🙂
    und zwar wieso &3 den selben wert wie %4 liefert.
    kann man das irgendwie mathematisch zeigen ? ...

    ÖÄhmm, im Prinzip schon, aber es will ja keiner was davon wissen, so why ...



  • pointercrash() schrieb:

    macro-troll-fan schrieb:

    macro-troll schrieb:

    eben drum, ich hatte weiter oben ein paar schicke macros gepostet (zwar mit flüchtigkeitsfehlern drin), aber davon will ja keiner was wissen.
    🙂

    doch, ich ! 🙂
    und zwar wieso &3 den selben wert wie %4 liefert.
    kann man das irgendwie mathematisch zeigen ? ...

    ÖÄhmm, im Prinzip schon, aber es will ja keiner was davon wissen, so why ...

    wenn es niemand wissen wollte, dann würde auch niemand danach fragen.



  • der wissbegierige schrieb:

    wenn es niemand wissen wollte, dann würde auch niemand danach fragen.

    Dachte, Du willst mich veralbern 🤡
    mit %4 führst Du eine Modulo- Division durch. Bei /4 würdest Du im Binärsystem zweimal rechts shiften, also /2 /2. Was da überbleibt, ist das Ergebnis der Integer- Division, was Du nach rechts rausgeshiftet hast, ist der Modulo- Rest. Das sind die unteren beiden Bits und die kannst Du genausogut (naja, zumeist schneller) durch Verundung gewinnen. Daß bei 3 die unteren beiden Bits gesetzt sind, muß ich nicht gesondert erklären, oder? 😉
    Genügt die anschauliche Erklärung, oder soll ich den Bronstein zücken und von dort aus dem Abschnitt Zahlensysteme rezitieren?



  • pointercrash() schrieb:

    Daß bei 3 die unteren beiden Bits gesetzt sind, muß ich nicht gesondert erklären, oder? 😉

    nööööööööö

    pointercrash() schrieb:

    Genügt die anschauliche Erklärung, oder soll ich den Bronstein zücken und von dort aus dem Abschnitt Zahlensysteme rezitieren?

    Nö, nicht nötig, die Erklärung ist spitze 👍
    Danke dafür.

    Also ich es mir aufgeschrieben und mit diversen Zahlen probiert habe, hab ich es auch geblickt *stolz*

    Also, wenn ich %4 haben will, schreibe ich &3.
    Möchte ich %8, schreibe ich &7.
    Will ich %16 kann ich dafür &15 setzen.
    %32 -> &31 usw.

    Also ist immer %(2^x) gleichwertig mit &(2^x-1)

    Jetzt hab auch ich es kapiert 🙂


Anmelden zum Antworten