Interview: Přesunutí Bits

hlasů
5

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?

Položena 06/07/2010 v 11:50
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
0

použít bitový XOR operátor?

Odpovězeno 06/07/2010 v 11:52
zdroj uživatelem

hlasů
8

#define MASK 0x00000002 

nový = starý ^ MASK

Odpovězeno 06/07/2010 v 11:54
zdroj uživatelem

hlasů
3

Exkluzivní nebo se 2. Například i = i ^ 2

Odpovězeno 06/07/2010 v 11:55
zdroj uživatelem

hlasů
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, samozřejmě jej XOR :-) Ale 2 je druhý bit není předposlední bit. Možná lepší mluvit o MSB a LSB.

Odpovězeno 06/07/2010 v 12:02
zdroj uživatelem

hlasů
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
Odpovězeno 17/07/2010 v 01:01
zdroj uživatelem

hlasů
6

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á.

Odpovězeno 07/10/2010 v 21:53
zdroj uživatelem

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