首先求出這個數的二進位制中除最右側1的那位不變,其餘位都是0。
例如:1110,最右側是1的那個數是0010,0010是如何得出的呢?
記乙個小公式:n&((~n)+1)
n=1110帶入即可求出最右側的1的那位數
1110&((~1110)+1)=1110&(0010)=0010
因此計算n的二進位制中1的個數就很容易了
public
static
intbit1count
(int n)
return count ;
}
異或運算滿**換律結合律,其實就一句話:異或操作與數字運算的順序無關,任何乙個數異或它本身都等於0。
public
void
printoddnum2
(int
array)
// eor = a^b 只要知道a b中的任何乙個就能計算出另乙個
int rightone = eor&
(~eor+1)
;int eor2 =0;
// 找這個數二進位制的最右側是1的那位數,因為其他數字是偶數個所以異或之後是0
for(
int i=
0;isystem.out.
println
(eor2)
; system.out.
println
(eor2^eor)
;}
32 位和 64 位 Windows 常見問題
以下是有關 32 位和 64 位版本 windows 的一些常見問題的解答。32 位和 64 位版本 windows 之間有什麼區別?術語 32 位 和 64 位 是指計算機的處理器 也稱為 cpu 處理資訊的方式。64 位版本的 windows 可處理大量的隨機訪問記憶體 ram 其效率遠遠高於 ...
運算子的常見問題
1 算數運算子常見問題 1 運算浮點時運算會有誤差 二進位制精度問題影響 2 算術運算子中前後有字串的出現且有 運算子的情況下則一般會完成字串的拼接。3 如果運算過程中沒有字串且使用 運算子的情況下,其他型別都會轉換為number型別並進行加法運算。4 所有型別遇到 運算子時,都會隱式轉換為數值,然...
常見位運算
builtin ffs x 返回x的最後一位1是從後向前第幾位 builtin popcount x 返回x的二進位制下1的個數 x x 只保留最後一位1的二進位制 x x x 1 清零最低位的1 x 1 判斷奇偶 x 1 n 將第n位置1 x 1 n 將第n位置0 x 1 k 1 對x的第k位取反...