按位與的小應用

2021-09-09 09:27:44 字數 724 閱讀 6078

x = x & (x - 1)的意義:

我們知道 & 為 按位與 運算子,有如下性質:

1 & 1 == 1

1 & 0 == 0

0 & 1 == 0

0 & 0 == 0

x & (x - 1)就是將二進位制x的最後乙個1置為0,如2015的二進位制為11111011111,則進行一次 x & (x - 1) 運算後x的值變為11111011110,可以手動模擬一下,很簡單,所以配合這個我們在設定乙個計數器count,初始為0,外面套乙個while迴圈,迴圈條件為x不為0,就可以計算x的二進位制中1的個數,程式如下:

#include "stdafx.h"

#includeusing namespace std;

int func(int x)

return count;

}int main()

這是京東的一道筆試題。

q: 把乙個int型的數的二進位制的最右邊那個1找出來(小技巧)

public

static

intfindrightone

(int n)

按位與 按位異或 按位取反

按位與 按位或 按位異或 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 0000...

詳解「 按位與 按位或 按位異或」

按位與 按位或 按位異或 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 0000...

按位與 按位異或 按位取反 分析

按位與 按位或 按位異或 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 0000...