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?
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?
utilizzare un bit a bit operatore XOR?
#define 0x00000002 MASCHERA
nuovo = vecchio ^ MASCHERA
OR esclusivo con 2. Ad esempio 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, naturalmente si può XOR è :-) Ma 2 è la seconda non po 'la seconda ultimo bit. Forse meglio parlare di MSB e LSB.
X ^ (1<<n) will toggle the state of nth bit in the number X.
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.