C語言-位操作技巧

1

int a = -15, b = 15;  
printf("%d %d\n", a >> 2, b >> 2); 

因爲15=0000 1111(二進制),右移二位,最高位由符號位填充將得到0000 0011即3。-15 = 1111 0001(二進制),右移二位,最高位由符號位填充將得到1111 1100即-4

2

a<<2;
/*
a左移2位且無數據溢出=a*4
(若1001左移兩位變爲0100則爲數據溢出)
右移則是  /2^n
*/

3

a ^= b;  
b ^= a;  
a ^= b; 
//a,b互換值

4

i&1
//通過最後一位判斷是否爲奇數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章