Wywiad: Rzut Bity

głosy
5

Niedawno zobaczyłem pytanie wywiad pytając, co następuje:

Biorąc pod uwagę liczbę 32 bit, napisać kod pseudo odwrócić przedostatni kawałek

Jaki jest najlepszy / Najprostszym sposobem, aby to zrobić?

Utwórz 06/07/2010 o 11:50
źródło użytkownik
W innych językach...                            


6 odpowiedzi

głosy
0

używać bitowe operatora XOR?

Odpowiedział 06/07/2010 o 11:52
źródło użytkownik

głosy
8

#define MASK 0x00000002 

Nowa maska ​​^ = stare

Odpowiedział 06/07/2010 o 11:54
źródło użytkownik

głosy
3

Exclusive Albo z 2. Przykładowo i = i ^ 2

Odpowiedział 06/07/2010 o 11:55
źródło użytkownik

głosy
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, oczywiście można go XOR :-) Ale 2 to druga nie nieco przedostatni kawałek. Może lepiej mówić o MSB i LSB.

Odpowiedział 06/07/2010 o 12:02
źródło użytkownik

głosy
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
Odpowiedział 17/07/2010 o 01:01
źródło użytkownik

głosy
6

Widzę kilka odpowiedzi „zinterpretować” jako ostatni bit MSB, inni jako LSB. Być może szukasz kandydatów na tyle silny, aby zatrzymać i poprosić o wyjaśnienia przed cranking kod. To bardzo ważne w pracy w świecie rzeczywistym.

Odpowiedział 07/10/2010 o 21:53
źródło użytkownik

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