1. 與、或、異或的運算規律
與(&)
或(丨)
異或(^)
0 & 0 = 0
0 丨 0 = 0
0 ^ 0 = 0
1 & 0 = 0
1 丨 0 = 1
1 ^ 0 = 1
0 & 1 = 0
0 丨1 = 1
0 ^ 1 = 1
1 & 1 = 1
1 丨 1 = 1
1 ^ 1 = 0
2. 二進位制中的1的個數
2.1 可能引起死迴圈的解法
思路:先判斷整數二進位制表示中最右邊一位是不是1;接著把輸入的整數右移一位,此時原來處於從右邊數起的第二位被移到最右邊了,再判斷是不是1;每次這樣移動一位,直到整個整數變成0為止。
public
static
intnumberof
(int n)
return count;
}
2.2 常規解法
思路:首先把n和1做與運算,判斷最低位是不是1。接著把1左移一位得到2,再和n做與運算,就能判斷n的次低位是不是1…這樣反覆左移,每次都能判斷n的其中一位是不是1。
public
static
intnumberof2
(int n)
return count;
}
2.3 不可思議的解法
思路:把乙個整數減去1,再和原整數做與運算,會把該整數最右邊的1變成0。那麼乙個整數的二進位制表示中有多少個1,就可以進行多少次這樣的操作。
public
static
intnumberof3
(int n)
return count;
}
3.位運算相關題目
用一條語句判斷乙個整數是不是2的整數次方(二進位制有且只有乙個1);
輸入兩個整數m和n,計算需要改變m的二進位製表中的多少位才能得到n(兩數異或,統計異或的結果)。
2.3中把乙個整數減去1之後再和原來的整數做位運算,得到的結果相當於把整數的二進位制表示中最右邊的1變成0。
二進位制位運算中 1 的個數
題目描述 現在夯夯和朱朱餓了,他們想去吃點東西,他們發現店裡東西的 都是2的次方倍 20,21,22 現在夯夯和朱朱想把他們的的錢全都用掉。想知道他們最少能吃多少東西,最多能吃多少東西?輸入格式 多組樣例,每組樣例佔一行,每行乙個整數,代表他們擁有的總錢數。輸出格式 分別回答他們的問題,答案用空格隔...
位運算 二進位制中1的個數,常見的位運算
求n的第k位數字 n k 1返回n的最後一位1 lowbit n n n 如果5 就返回1 如果是4,就返回4 100 如果是8,就返回8 1000 裡面是二進位制。給定乙個長度為n的數列,請你求出數列中每個數的二進位制表示中1的個數。輸入格式 第一行包含整數n。第二行包含n個整數,表示整個數列。輸...
位運算 二進位制中1的個數12
位運算 是把數字用二進位制表示之後,對每一次是0或1的運算。乘除效率低,實際程式設計中盡可能的用移位運算代替乘除法。世界上有10中人,一種人知道二進位制,而另一種人不知道二進位制 五種位運算 與 或 異或 左移和右移,分別對應 異或 相同為0,相異為1。左移運算子m左移n,表示把m左移n位,最左邊的...