Interview: Flipping Bits

stemmen
5

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?

De vraag is gesteld op 06/07/2010 om 11:50
bron van user
In andere talen...                            


6 antwoorden

stemmen
0

gebruik maken van een bitsgewijze XOR operator?

antwoordde op 06/07/2010 om 11:52
bron van user

stemmen
8

#define MASK 0x00000002 

new = oude ^ MASK

antwoordde op 06/07/2010 om 11:54
bron van user

stemmen
3

Exclusieve Of met 2. Bijvoorbeeld i = i ^ 2

antwoordde op 06/07/2010 om 11:55
bron van user

stemmen
3
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.

antwoordde op 06/07/2010 om 12:02
bron van user

stemmen
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
antwoordde op 17/07/2010 om 01:01
bron van user

stemmen
6

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.

antwoordde op 07/10/2010 om 21:53
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more