一次求反運算子是一元運算子,它的作用僅是對運算數的位「翻轉」。將運算數的每個是1的位翻轉為0,而將每個是0的位翻轉為1。下面是真值表:
b1
~b1-------------
0 1
1 0
如果不知道運算中數值的準確位大小,那麼一次求反運算子非常有用,使用它可讓程式不會依賴於整數資料型別的特定大小。例如,要將型別為int的w1的最低位設為0,可將乙個所有位都是1,但最右邊的位是0的int值與w1進行與運算。
w1 &= 0xfffffffe; 用 w1 &= ~1; 替換,那麼在任何機器上w1都會同正確的值進行與運算。
這是因為這條語句會對1求反,然後在左側加入足夠的1,以滿足int的大小要求(在32位機器上,會在左側的31個位上加1)。
蘋果開發者mike的
objective-c位運算子一覽表
Objective C中的位運算子用法
符號運算 按位與 按位或 按位異或 一次求反 向左移位 向右移位 表中列出的所有運算子,除一次求反運算子 外,都是二元運算子,因此需要兩個運算數。位運算子可處理任何型別的整型值,但不能處理浮點值。1 按位運算子 對兩個值執行與運算時,會逐位比較兩個值的二進位制表示。第乙個值與第二個值對應位都為1時,...
Objective C中的位運算子用法
符號運算 按位與 按位或 按位異或 一次求反 向左移位 向右移位 表中列出的所有運算子,除一次求反運算子 外,都是二元運算子,因此需要兩個運算數。位運算子可處理任何型別的整型值,但不能處理浮點值。1 按位運算子 對兩個值執行與運算時,會逐位比較兩個值的二進位制表示。第乙個值與第二個值對應位都為1時,...
位運算子,「,」逗號運算子,
位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...