日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

位运算各种方法总结

發(fā)布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 位运算各种方法总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

位運(yùn)算

  • 1、按位與
  • 2、按位或
  • 3、按位取反
  • 4、按位異或
  • 5、按位同或
  • 6、左移
  • 7、帶符號右移
  • 8、無符號右移
  • 9、python實(shí)現(xiàn)各種位運(yùn)算操作
  • 10、位運(yùn)算小技巧
  • 11、應(yīng)用

\quad \quad現(xiàn)代計(jì)算機(jī)中,幾乎都是二進(jìn)制計(jì)算機(jī)(三進(jìn)制計(jì)算機(jī)僅有少量),所有的數(shù)據(jù)都以二進(jìn)制的形式存儲在設(shè)備中。位運(yùn)算就是直接對整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作,計(jì)算時將十進(jìn)制轉(zhuǎn)為 二進(jìn)制,再進(jìn)行計(jì)算。
\quad \quad需要注意,位運(yùn)算是針對 二進(jìn)制 的運(yùn)算,對每一個位進(jìn)行布爾運(yùn)算操作。所以 手動 進(jìn)行 位運(yùn)算計(jì)算 時,需要將數(shù)轉(zhuǎn)換成二進(jìn)制的表示形式,再進(jìn)行計(jì)算。

1、按位與

\quad \quad計(jì)算時將 十進(jìn)制 轉(zhuǎn)為 二進(jìn)制 再進(jìn)行計(jì)算,同位置為1,則結(jié)果為1,其余情況皆為0

  • 結(jié)論:n&(n-1) 會去除 n 的位級表示中最低的那一位 1。
  • 應(yīng)用例題:二進(jìn)制中1的個數(shù)

2、按位或

\quad \quad對應(yīng)位上有一個為1,結(jié)果就為1。兩個都為0,結(jié)果才得0,類似加的關(guān)系。

3、按位取反

\quad \quad對每一位進(jìn)行取反操作,如果是1則結(jié)果為0,是0則結(jié)果為1。即為反碼

4、按位異或

\quad \quad當(dāng)兩個對應(yīng)位不同時結(jié)果才為1,相同時得0.


性質(zhì):

  • 任何數(shù)和 0做異或運(yùn)算,結(jié)果仍然是原來的數(shù),即a⊕0=a。

  • 任何數(shù)和其自身做異或運(yùn)算,結(jié)果是 0,即 a⊕a=0。

  • 異或運(yùn)算滿足交換律和結(jié)合律,a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。

5、按位同或

\quad \quad當(dāng)兩個對應(yīng)位相同時結(jié)果才為1,不同時得0.

6、左移

\quad \quad將二進(jìn)制位上的數(shù)向左移動,右邊補(bǔ)0.

7、帶符號右移

\quad \quad有符號整數(shù)最高位代表著數(shù)的正負(fù),最高位為1代表負(fù)數(shù),最高位為0代表正數(shù)。

\quad \quad帶符號右移是右移時,左邊補(bǔ)充最高位上的值。

8、無符號右移

\quad \quad二進(jìn)制上的數(shù)向右移動,右移時左邊補(bǔ)0。

9、python實(shí)現(xiàn)各種位運(yùn)算操作

位運(yùn)算符說明使用形式
&按位與a&b
|按位或a|b
~按位取反~a
^按位異或a^b
<<按位左移a<<b
>>按位右移a>>b
-轉(zhuǎn)換為負(fù)數(shù)-a

10、位運(yùn)算小技巧

1、獲取二進(jìn)制中最右邊的1,且其它位置為0: X & (-X)


因此,x 和 ?x 只有一個共同點(diǎn):最右邊的 1。這說明 x & (-x) 將保留最右邊的 1。并將其他的位設(shè)置為 0。

2、將二進(jìn)制中最右邊的1置為0: X & (X - 1)

  • (x - 1) 代表了將 x 最右邊的 1 設(shè)置為 0,并且將較低位設(shè)置為 1。

  • 再使用與運(yùn)算:則 x 最右邊的 1 和就會被設(shè)置為 0,因?yàn)?1 & 0 = 0。

11、應(yīng)用

Leetcode之位運(yùn)算

總結(jié)

以上是生活随笔為你收集整理的位运算各种方法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。