前言
本文為本小白學習數據結構的筆記,將以算法題為導向,向大家更清晰的介紹數據結構相關知識(算法題都出自B站馬士兵教育——左老師的課程,講的很好,對于想入門刷題的人很有幫助)
為什么要使用為位運算
位運算直接對整數的二進制位進行操作,因為在計算機中數據都是以二進制存儲的,因此它在許多場景下能夠提供比傳統算術和邏輯運算更高效、更簡潔的解決方案。
常見的幾種位運算
1.位與&
十進制轉二進制 兩個都為1則為1,否則為0
例:判斷奇偶數:x&1=1(x為奇數 ) x&1=0(x為偶數)
2.位或|
十進制轉二進制 兩個都為0則為0,否則為1
3.異或^
十進制轉二進制 兩個數都相同為0,否則為1
(滿足交換律,相同的數異或位0,任何數和0異或都等于這個數本身)
4.按位取反~
變為二進制后,0變1,1變0,高位不足取0
5.左移 x<<y
變為二進制后,x左移y位,補零。相當于乘二。
6.右移 x>>y
變為二進制后,x右移y位,x為非負數高位補零,為負數高位補1。
例:(x+y)>>1右移一位相當于除以二
下面列幾個比較好玩的運算的例子:
- 實現a與b值的交換
//實現a與b值的交換a = a ^ b;b = a ^ b; // b=a^b^b=aa = a ^ b; // a=a^b^b
- 想查x第n位是否為1:x&(1<<n)
2.把x的第n位設置為1/0;
為1
為0