位運算基本內容與例題

2021-10-17 02:24:34 字數 2977 閱讀 3479

201. 數字範圍按位與

我們求 & 運算,最開始想到的暴力方法,將每個數字與運算過一遍

示例1:

ans = 5 & 6 & 7
code

int

bit(

int m ,

int n )

return result;

}

注意result初始化為m,而不是0,想想為什麼?

因為如果設定

result = 0;

0 & i = 0; // 0 & 任何東西都 = 0

不過該方法超時…

我們假設兩個二進位制

m: 1001 0110

n: 1001 1010 //m < n

可以發現m -> n的所有數 ,前四位都是不變的而後四位發生變化

所以我們從開始不同相同的地方設為分界點

m: 1001 | 0110

n: 1001 | 1010 //m < n

所以就必定有

m : 0 ******x

n : 1 ******x

由 [m,n] 區間一定存在

m : 0 1111

n : 1 0000 // 極端情況 m = 0 1111 n = 1 0000

**所以 m & n = 0 **

**這之後就全是0!!( 0 & 啥) == 0 **

所以,我們最後只需要找到

m 和 n 開始相同的位就可以了!!

code

int rangebitwiseand(int m, int n)

return m << count; //左移補0

}

end…

1、與運算&

​ 1)兩個都是1,結果才是1

​ 2)可以用來判斷奇偶

if

(( a &1)

==1)if

(( a %2==

0))//兩句等效

​ 3)取指定位置的數

1111

0110

//取後四位

&0000

1111

______________

0000

0110

//與運算取得後四位

2、或運算 |

​ 1)兩個0,才是0

​ 2)設定為1/0

//後四位設定為1

1101

0101

|0000

1111

______________

1101

1111

//設定為1

3、異或運算 ^

​ 1)

0^0 =0  0^1=1  1^0=1  1^1=0  a^a = 0  a^0 = a
​ 2)無中間變數交換兩個數

int a = 1 ;

int b = 2;

a = a^b; //a = a^b b = b

b = a^b; //a = a^b b = a^b^b , 由上面的性質b^b = 0 -> b = a^0 = a;

a = a^b; //a = a^b^a ,同上 a = b , b = a;

3)查詢一堆數裡面乙個數出現了奇數次,其他數出現了偶數次,這個奇數次的是啥

int eor =0;

int a[i]=;

for(

int i =

0; i <

sizeof

(a)/

sizeof

(int

); i++

)printf

("%d"

,eor)

;//eor = 3

4)取出二進位制中最右側的1

n    = 0011 0101 1100

~n = 1100 1010 0011

~n+1 = 1100 1010 0100

//n&(~n + 1 ) ---> 0000 0000 0100

5)二進位制裡有幾個1

int n = 16;

int count = 0;

while( n != 0 )

4、取反~
~1 = 0 

~0 = 1

5、右移》

將乙個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄

1110 0011

// a >>= 1;

1111 0001

6、左移<<

將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)

1010 1110

// a = a << 2;

1011 1000

python 基本內容

1.包 import 模組名 這個包首先在當前目錄找。每個模組中可以用 name 判斷是否為 main 來執行程式 建立包pack,建立乙個資料夾然後建立 init py import pack.filename pack.filename.f 引用包重新命名 import pack as newn...

Servlet基本內容

常用的狀態碼如下 200 請求成功。302 請求重定向。304 請求資源沒有改變,訪問本地快取。404 請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。500 伺服器內部錯誤。通常程式拋異常。狀態資訊 狀態資訊是根據狀態碼變化而變化的 1 servlet技術 2 filter技術...

php基本內容

1.注釋 或者 name admin echo hello name 2.變數 以 開頭 name admin echo hello name 3.字串拼接 使用 name admin echo hello name 4.物件訪問屬性 使用 class obj o newobj echo o nam...