1. 程式人生 > >【屯】位運算技巧

【屯】位運算技巧

返回 左移 得到 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

【屯】位運算技巧