Συνέντευξη: Flipping Bits

ψήφοι
5

Είδα πρόσφατα μια ερώτηση συνέντευξης ζητώντας από το ακόλουθο κείμενο:

Λαμβάνοντας υπόψη μια σειρά 32 bit, γράψτε ψευδο κώδικα για να αναστρέψετε το δεύτερο τελευταίο κομμάτι

Ποιος είναι ο καλύτερος / ευκολότερος τρόπος να γίνει αυτό;

Δημοσιεύθηκε 06/07/2010 στις 11:50
πηγή χρήστη
Σε άλλες γλώσσες...                            


6 απαντήσεις

ψήφοι
0

χρησιμοποιήστε ένα bitwise XOR επιχειρηματία;

Απαντήθηκε 06/07/2010 στις 11:52
πηγή χρήστη

ψήφοι
8

#define 0x00000002 ΜΑΣΚΑ 

νέα = παλιά ^ ΜΑΣΚΑ

Απαντήθηκε 06/07/2010 στις 11:54
πηγή χρήστη

ψήφοι
3

Αποκλειστικό Ή με 2. Για παράδειγμα, i = i ^ 2

Απαντήθηκε 06/07/2010 στις 11:55
πηγή χρήστη

ψήφοι
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, φυσικά μπορείτε να το XOR :-) Αλλά 2 είναι η δεύτερη δεν το κομμάτι από το προτελευταίο κομμάτι. Ίσως καλύτερα να μιλήσουμε για το MSB και LSB.

Απαντήθηκε 06/07/2010 στις 12:02
πηγή χρήστη

ψήφοι
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
Απαντήθηκε 17/07/2010 στις 01:01
πηγή χρήστη

ψήφοι
6

Βλέπω κάποιες απαντήσεις ερμηνεύουν «τελευταίο κομμάτι» ως MSB, άλλοι ως LSB. Ίσως ψάχνουν για τους υποψηφίους αρκετά έξυπνος για να διακόψετε και να ζητήσει διευκρινίσεις πριν από τις πρώτες στροφές από τον κωδικό. Αυτό είναι πολύ σημαντικό σε πραγματικό κόσμο της εργασίας.

Απαντήθηκε 07/10/2010 στις 21:53
πηγή χρήστη

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