【屯】位運算技巧
阿新 • • 發佈:2018-03-31
返回 左移 得到 blog int pan color get post
1 int getbit(int c,int i)//獲取c這個數字第i位的bit是什麽 2 { 3 return ((c>>(i-1))&1);//將c右移i-1位,則第i-1位到了末尾。與1相與,返回得到的結果。 4 } 5 void setbit(int &c,int i,int v)//修改c的第i位的bit值 v傳入1或0,傳入1則將數字c的第i位置成1 6 { 7 if(v)//0置為1 8 { 9 c|=(1<<i); 10 } 11 else//1置為0 12 { 13 c&=!(1<<i); 14 } 15 16 return ; 17 } 18 void flipbit(int &c,int i)//反轉數字c的二進制數的某一位 19 { 20 c^=(1<<i); 21 }
比如二進制數0010,需要將第4位的0變成1,將1左移4位,得到1000
00001000
|00000010
__________
00001010
比如二進制數1010,需要將第2位的1變成0,將1左移2位,得到0010
0010取反得到1101
1101
&1010
______
1000
-------------------------------
二進制數字1100,反轉第三位,1左移3位得到0100
0100
^1100
______
1000
反轉第二位
0010
^1100
______
1110
【屯】位運算技巧