一、求下面函式的返回值
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 ...