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