Ik zag onlangs een interview vraag stellen van de volgende:
Gegeven een 32-bits getal, schrijf pseudo code om de tweede laatste beetje flip
Wat is de beste / makkelijkste manier om dit te doen?
Ik zag onlangs een interview vraag stellen van de volgende:
Gegeven een 32-bits getal, schrijf pseudo code om de tweede laatste beetje flip
Wat is de beste / makkelijkste manier om dit te doen?
gebruik maken van een bitsgewijze XOR operator?
#define MASK 0x00000002
new = oude ^ MASK
Exclusieve Of met 2. Bijvoorbeeld 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, natuurlijk kunt u het :-) XOR Maar 2 is de tweede bit niet de tweede laatste beetje. Misschien is het beter om te praten over MSB en LSB.
X ^ (1<<n) will toggle the state of nth bit in the number X.
Ik zie een aantal antwoorden te interpreteren "laatste beetje", zoals MSB, anderen als LSB. Misschien zijn ze op zoek naar kandidaten slim genoeg om te pauzeren en om opheldering te vragen voordat de lopende band code. Dat is heel belangrijk in real-world werk.