位運算總結與應用

2021-10-23 04:20:39 字數 746 閱讀 5156

一、求下面函式的返回值

int func(x)

return count;

}

功能:將x轉化為2進製,看含有的1的個數。

每執行一次x = x&(x-1),會將x用二進位制表示時最右邊的乙個1變為0,因為x-1將會將該位(x用二進位制表示時最右邊的乙個1)變為0。

二、下面函式的作用

bool func(int x)

功能:判斷乙個數是否2的n次方。

如果乙個數是2的n次方,那麼這個數用二進位制表示時其最高位為1,其餘位為0,減去1和原來的數進行位與運算,得到的結果可以作為判斷依據。

這裡== 優先順序高於 &,所以以上**可以優化:

bool func(int x)

三、求下列函式的呼叫結果

int func(int x, int y) 

int main()

功能:計算兩個數的平均值。

按位與是相同位和的一半,按位或是不同位的和,右移相當於除以2,所以該函式相當於求兩個數之和的一半。

所以,輸出500;

所以要通過位運算來實現兩個數之和,可以這樣做:

int add(int a, int b)

位運算應用總結

例如,在乙個系統中,使用者一般有查詢 select 新增 insert 修改 update 刪除 delete 四種許可權,四種許可權有多種組合方式,也就是有16中不同的許可權狀態 2的4次方 一般情況下會想到用四個boolean型別變數來儲存 public class permission 上面用...

位運算總結 之 與

1 判斷奇偶 乙個數二進位制的末位數是1,則該數是奇數,末位數是0,則該數是偶數。因此可以用 a 1 0來判斷。如下例 include using namespace std int main cout endl return 0 2 消除尾一 消除最後出現的1 x x 1 如 用 o 1 時間檢測...

位運算應用

位運算 針對整型 字元型,計算機會將它轉換為二進位制運算 1 按位與 x y 對應位都為1時才為1 用途 取 保留1個數的某位 對應掩碼的對應位為1 其餘各位置1 2 按位或 x y 對應位都為0才為0,否則為1 用途 將1個數的某些位置1,其餘不變 3 按位異或 x y 對應位相同為0,不同為1 ...