位運算 筆記

2021-09-26 14:17:23 字數 2134 閱讀 2253

這幾天擼了一下位運算。

寫個筆記總結一下。

首先運算了解一下。

& : 按位與

| : 按位或

^ : 按位異或

~ : 取反

<< : 左移 >> : 右移

這一題,我們本來可以不停除2,看最後是否等於1

但是掌握了上面我們說的思想以後。

就直接簡單了。只需要兩行**。

class solution 

}

因為如果是2的冪 那麼它的二進位制必定只有乙個1.

去掉了最後乙個1,那麼就只能是0了。

不同於上一題,這是4的冪。

那麼觀察一下,4的冪也只有1個1,但是每乙個1都必定在二進位制的奇數字上。

偶數字必須是0.

那麼我給你乙個數。

1010101010101010101010101010101

這個數嚴格滿足了上面的條件。

那麼將乙個4的冪的數,與這個數,按位與。會怎麼樣?

答案是不會怎麼樣。

我們稱4的冪為x,x的二進位制只有乙個1,並且在奇數字。這個數所有的奇數字都是1,而偶數字都是0,那麼兩數經過&, 1&1還是1,0&0還是0,1&0還是0,所以根本不會變化。

反之 如果它不是4的冪,如果是2的冪 那麼在偶數上是1,但是那個數的偶數上是0,即1&0為0

則變化了,不再是原來那個數。

所以與1010101010101010101010101010101經過按位與而不變的數,一定是4的冪。

1010101010101010101010101010101的16進製制寫法為0x55555555。

class solution 

}

要求線性。

int missingnumber(int* nums, int numssize)

for(i = 0; i < numssize; i ++)

} return i;

}

以前我是這麼寫的。

ac了。效率可以說還不錯。

現在可以用異或

class solution 

}

當然還有高斯求和公式的數學解法。更妙。

我複製了官解。

class solution 

}

類似的一題。

389. 找不同

給定兩個字串 s 和 t,它們只包含小寫字母。

字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。

請找出在 t 中被新增的字母。

class solution 

for(character x : t.tochararray())

return (char) res;

}}

最後看一題,我覺得很不錯的題目。

318. 最大單詞長度乘積

如果不用位運算還真是有點麻煩。

那用位運算該怎麼寫呢?

因為題目規定必須沒有公共字母。就可以很容易想到按位與&。

不同的字母按位與必須是0。相同則為0 .

那麼可不可以這樣表示。

「abc」 為 00000000 00000000 00000000 00000111.

"bc"為00000000 00000000 00000000 00000110.

"abcde"為00000000 00000000 00000000 00011111.

有就用1來表示。

那麼abc & bc 必定是00000000 00000000 00000000 00000111

如果ab & c 就是00000000 00000000 00000000 00000000

無公共就是0.

class solution 

}int max = 0;

for(int i = 0; i < words.length; i ++)

}return max;

}}

前路漫漫啊。還有很多需要去學習呢。

位運算筆記

10 1010 12 1100 與例如 以下按位比較,當兩個同時為1則為1,否則為0 10 1010 12 1100 結果為 8 1000 或例如 以下按位比較,當兩個有任何乙個為1則為1,否則為0 10 1010 12 1100 結果為 14 1110 非例如 以下按位比較,當兩個數不同時則為1否...

筆記 位運算

1 格式 x y 2 規則 對應位均為1時才為1,否則為0。例如,3 9 1 0011 1001 0001 3 主要用途 取 或保留 1個數的某些位,其餘各位置0。1 格式 x y 2 規則 對應位均為0時才為0,否則為1 3 9 11。例如,3 9 11 0011 1001 1011 3 主要用途...

位運算筆記

需要掌握的知識 原碼 反碼 補碼 原碼 是最簡單的機器數表示法。用最高位表示符號位,1 表示負號,0 表示正號。其他位存放該數的二進位制的絕對值。1010 最高位為 1 表示這是乙個負數,其他三位為 010 即 0 2 2 1 2 1 0 20 2 表示冪運算子 所以1010表示十進位制數 2 面臨...