Είδα πρόσφατα μια ερώτηση συνέντευξης ζητώντας από το ακόλουθο κείμενο:
Λαμβάνοντας υπόψη μια σειρά 32 bit, γράψτε ψευδο κώδικα για να αναστρέψετε το δεύτερο τελευταίο κομμάτι
Ποιος είναι ο καλύτερος / ευκολότερος τρόπος να γίνει αυτό;
Είδα πρόσφατα μια ερώτηση συνέντευξης ζητώντας από το ακόλουθο κείμενο:
Λαμβάνοντας υπόψη μια σειρά 32 bit, γράψτε ψευδο κώδικα για να αναστρέψετε το δεύτερο τελευταίο κομμάτι
Ποιος είναι ο καλύτερος / ευκολότερος τρόπος να γίνει αυτό;
χρησιμοποιήστε ένα bitwise XOR επιχειρηματία;
#define 0x00000002 ΜΑΣΚΑ
νέα = παλιά ^ ΜΑΣΚΑ
Αποκλειστικό Ή με 2. Για παράδειγμα, 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, φυσικά μπορείτε να το XOR :-) Αλλά 2 είναι η δεύτερη δεν το κομμάτι από το προτελευταίο κομμάτι. Ίσως καλύτερα να μιλήσουμε για το MSB και LSB.
X ^ (1<<n) will toggle the state of nth bit in the number X.
Βλέπω κάποιες απαντήσεις ερμηνεύουν «τελευταίο κομμάτι» ως MSB, άλλοι ως LSB. Ίσως ψάχνουν για τους υποψηφίους αρκετά έξυπνος για να διακόψετε και να ζητήσει διευκρινίσεις πριν από τις πρώτες στροφές από τον κωδικό. Αυτό είναι πολύ σημαντικό σε πραγματικό κόσμο της εργασίας.