Nedávno jsem viděl rozhovor otázku ptá následující:
Vzhledem k tomu, 32 bitové číslo, psát pseudo kód otočit druhý posledního bitu
Jaká je nejlepší / nejsnazší způsob, jak to udělat?
Nedávno jsem viděl rozhovor otázku ptá následující:
Vzhledem k tomu, 32 bitové číslo, psát pseudo kód otočit druhý posledního bitu
Jaká je nejlepší / nejsnazší způsob, jak to udělat?
použít bitový XOR operátor?
#define MASK 0x00000002
nový = starý ^ MASK
Exkluzivní nebo se 2. Například 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, samozřejmě jej XOR :-) Ale 2 je druhý bit není předposlední bit. Možná lepší mluvit o MSB a LSB.
X ^ (1<<n) will toggle the state of nth bit in the number X.
Vidím, že některé odpovědi vykládat „poslední kousek“ jako MSB, jiní jako LSB. Možná hledají kandidáty dost chytrý, aby zastavit a požádat o vysvětlení, než dostával z kódu. To je v reálném světě práce velmi důležitá.