Nemrég láttam egy interjút jellegű kérdéssel a következő:
Adott egy 32 bites szám, írj pszeudo kódot, hogy megfordítja a második utolsó bit
Mi a legjobb / legegyszerűbb módja ennek?
Nemrég láttam egy interjút jellegű kérdéssel a következő:
Adott egy 32 bites szám, írj pszeudo kódot, hogy megfordítja a második utolsó bit
Mi a legjobb / legegyszerűbb módja ennek?
használjon egy bitenkénti XOR üzemeltetője?
#define MASZK 0x00000002
new = régi ^ MASZK
Exkluzív Vagy 2. Például i = i ^ 2
a = 0x80000000; // the second last bit set
if( i & a == 0) // not set in i -> set it
i |= a;
else // set -> un-set it in i
i &= ~a;
edit: arg, természetesen akkor XOR belőle :-) De 2 a második bit nem a második utolsó bit. Talán jobb, ha beszélünk az MSB és LSB.
X ^ (1<<n) will toggle the state of nth bit in the number X.
Látom válaszokat értelmezni „utolsó bit”, mint MSB, mások LSB. Talán ők keresnek jelölteket okos ahhoz, hogy szünet, és kérjen felvilágosítást előtt ontják a kódot. Ez nagyon fontos a valós munkát.