[英]How to clear a single bit in C#?
我是這樣做的 : 如何在C中設置,清除和切換單個位? 。
清除一點
使用按位AND運算符(
&
)清除一位。數&=〜(1 << x);
這將清除位
x
。 您必須使用按位NOT運算符(~
)反轉位字符串,然后將其取反。
它與帶符號的整數類型一起正常工作,但不適用於無符號的整數(例如,UInt32)。 編譯器說不可能對無符號類型進行這種操作。 那么如何處理無符號數字清除一位呢?
它實際上並沒有那么說。 它說:“無法將類型'int'隱式轉換為'uint'。存在顯式轉換(您是否缺少類型轉換?)”
這是因為1 << x
將是int
類型。
嘗試1u << x
。
UInt32 number = 40;
Int32 x = 5;
number &= ~((UInt32)1 << x);
如果將復合運算符&=
替換為常規&
,則可以將結果long
轉換為uint
:
uint number = /*...*/;
number = (uint)(number & ~(1 << x));
另一種方法是使用unchecked
塊:
uint number = /*...*/;
unchecked
{
number &= (uint)~(1 << x);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.