Intervista: Flipping Bits

voti
5

Recentemente ho visto una questione intervista chiedendo al seguente:

Dato un numero a 32 bit, scrivere codice pseudo capovolgere il secondo ultimo bit

Qual è il miglior / modo più semplice per fare questo?

È pubblicato 06/07/2010 alle 11:50
fonte dall'utente
In altre lingue...                            


6 risposte

voti
0

utilizzare un bit a bit operatore XOR?

Risposto il 06/07/2010 a 11:52
fonte dall'utente

voti
8

#define 0x00000002 MASCHERA 

nuovo = vecchio ^ MASCHERA

Risposto il 06/07/2010 a 11:54
fonte dall'utente

voti
3

OR esclusivo con 2. Ad esempio i = i ^ 2

Risposto il 06/07/2010 a 11:55
fonte dall'utente

voti
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, naturalmente si può XOR è :-) Ma 2 è la seconda non po 'la seconda ultimo bit. Forse meglio parlare di MSB e LSB.

Risposto il 06/07/2010 a 12:02
fonte dall'utente

voti
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
Risposto il 17/07/2010 a 01:01
fonte dall'utente

voti
6

Vedo alcune risposte interpretano "ultimo pezzo" come MSB, altri come LSB. Forse stanno cercando candidati abbastanza intelligente per mettere in pausa e chiedere chiarimenti prima di sfornare codice. Questo è molto importante nel lavoro del mondo reale.

Risposto il 07/10/2010 a 21:53
fonte dall'utente

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