ne dersiniz:
bit ^= 1;
onu değiştirir 1'den Bu sadece XOR ilk birşeylerdi.
Eğer (bir bayt için) soldaki 7 doğru sağda 0'dan sayma, biraz #n çevirmek isterseniz, bu ifadeyi kullanabilirsiniz:
bit ^= (1 << N);
Bu başka rahatsız olmaz bitleri, ancak değer sadece hiç ondalık değer 0 veya 1 olacak (yani tüm diğer bitleri 0 olarak kalır.), ardından aşağıdaki yanı kullanılabilir:
bit = 1 - bit;
Yine, sadece varsa bir bit seti olacak şekilde, 1 için aynı değeri ilk çevirme bitinde kullanabilirsiniz: #N:
bit = (1 << N) - bit;
Elbette, bu noktada aslında aynı anlamda bit manipülasyonu yapmıyorsunuz.
Sahip olduğunuz ifade de iyi, ancak yine de tüm değeri değiştirecek. Bir bool
değer olarak tek bir bit dile olsaydı
Ayrıca, bu yapabilirdi: değerini değiştirir
bit = !bit;
. şaka ait
Daha: Elbette , "enterprisey" yolu bir arama tablosu kullanmak olacaktır:
byte[] bitTranslations = new byte[256];
bitTranslations[0] = 1;
bitTranslations[1] = 0;
bit = bitTranslations[bit];
bu ilk bit gerektirmeyen bir avantaja sahiptir, hem de ilk seçilecek:
Bu ne istediğiniz değil. –
İlk olarak kullanmak istedim! ama sonra sadece booller için keşfetti. Bu seviyede çalışan eğlenceli şeyler. –
'Bir bool olarak ifade et' argümanı ikincisine bakıyorum - ne yaptığınıza bağlı olarak, kodun bir sonraki kişi için okunmasını biraz daha kolaylaştırabilir. – Paddy