Làm thế nào về:
bit ^= 1;
này chỉ đơn giản XOR của bit đầu tiên với 1, mà Toggles nó.
Nếu bạn muốn lật chút sốN, đếm từ 0 ở bên phải phía 7 bên trái (đối với một byte), bạn có thể sử dụng biểu thức này:
bit ^= (1 << N);
này sẽ không làm phiền bất kỳ khác bit, nhưng nếu giá trị được chỉ bao giờ sẽ là 0 hoặc 1 giá trị thập phân (tức là tất cả các bit khác là 0.), thì sau đây có thể được sử dụng cũng như:
bit = 1 - bit;
Một lần nữa, nếu có chỉ là sẽ được đặt một bit, bạn có thể sử dụng cùng một giá trị cho 1 như trong bit đầu tiên để lật bit #N:
bit = (1 << N) - bit;
Tất nhiên, tại thời điểm đó bạn không thực sự thực hiện thao tác bit theo cùng một nghĩa.
Biểu thức bạn có cũng tốt, nhưng lại thao tác toàn bộ giá trị.
Ngoài ra, nếu bạn đã bày tỏ một chút duy nhất như là một giá trị bool
, bạn có thể làm điều này:
bit = !bit;
nào Toggles giá trị.
Thêm một trò đùa: Tất nhiên, cách "enterprisey" sẽ được sử dụng một bảng tra cứu:
byte[] bitTranslations = new byte[256];
bitTranslations[0] = 1;
bitTranslations[1] = 0;
bit = bitTranslations[bit];
Nguồn
2010-04-09 08:14:32
này có lợi thế là không cần bit đầu tiên được lựa chọn đầu tiên, là tốt. –
Lần đầu tiên tôi muốn sử dụng! nhưng sau đó phát hiện ra nó chỉ dành cho người ngu. Những thứ thú vị, làm việc ở cấp độ này. –
Tôi sẽ đứng thứ hai đối số 'thể hiện nó như một bool' - tùy thuộc vào những gì bạn đang làm, có thể làm cho mã dễ đọc hơn một chút để người tiếp theo duy trì. – Paddy