thời gian gần đây tôi thấy một câu hỏi phỏng vấn yêu cầu sau đây:Phỏng vấn: Flipping Bits
Cho một số 32 bit, hãy viết giả mã để lật thứ hai bit cuối cùng
là gì là tốt nhất/cách dễ nhất để làm điều này?
thời gian gần đây tôi thấy một câu hỏi phỏng vấn yêu cầu sau đây:Phỏng vấn: Flipping Bits
Cho một số 32 bit, hãy viết giả mã để lật thứ hai bit cuối cùng
là gì là tốt nhất/cách dễ nhất để làm điều này?
#define MASK 0x00000002
mới = cũ^MASK
sử dụng toán tử XOR bitwise?
Dành riêng Hoặc với 2. Ví dụ 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;
chỉnh sửa: arg, tất nhiên bạn có thể XOR nó :-) Nhưng 2 là bit thứ hai không phải là bit cuối cùng thứ hai. Có lẽ tốt hơn để nói về MSB và LSB.
X^(1<<n) will toggle the state of nth bit in the number X.
Tôi thấy một số câu trả lời giải thích "bit cuối cùng" là MSB, một số khác là LSB. Có lẽ họ đang tìm kiếm các ứng cử viên đủ thông minh để tạm dừng và yêu cầu làm rõ trước khi cranking ra mã. Điều đó rất quan trọng trong công việc thực tế.
+1 điểm tuyệt vời –
@Ether Điều này chắc chắn không phải là thứ gì đó lạ lùng. Đây là cách sử dụng cơ bản nhất của XOR. Do đó, điều này không liên quan gì đến câu hỏi khác, đó là về việc sử dụng thao tác bit phức tạp. – Alderath
Có thể người phỏng vấn đang tìm kiếm một câu hỏi tiếp theo về việc liệu bạn có đang làm việc với một đại diện lớn hay nhỏ về cuối cùng hay một thứ gì đó dọc theo những dòng đó. – NealB