Entrevista: Volteo de Bits

votos
5

Hace poco vi una pregunta de la entrevista preguntando lo siguiente:

Dado un número de 32 bits, escribir código seudo para voltear el segundo bit última

¿Cuál es la mejor / manera más fácil de hacer esto?

Publicado el 06/07/2010 a las 11:50
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
0

utilizar un operador XOR bit a bit?

Respondida el 06/07/2010 a las 11:52
fuente por usuario

votos
8

0x00000002 MÁSCARA #define 

nueva edad = ^ MÁSCARA

Respondida el 06/07/2010 a las 11:54
fuente por usuario

votos
3

O-exclusiva con 2. Por ejemplo i = i ^ 2

Respondida el 06/07/2010 a las 11:55
fuente por usuario

votos
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, por supuesto, puede XOR :-) Pero 2 es el segundo bit no la segunda último bit. Tal vez mejor hablar de MSB y LSB.

Respondida el 06/07/2010 a las 12:02
fuente por usuario

votos
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
Respondida el 17/07/2010 a las 01:01
fuente por usuario

votos
6

Veo algunas respuestas interpretan "última gota", como MSB, otros como LSB. Quizás están buscando candidatos suficientemente inteligente como para hacer una pausa y pedir una aclaración antes de poner hacia fuera código. Eso es muy importante en el trabajo en el mundo real.

Respondida el 07/10/2010 a las 21:53
fuente por usuario

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