屯位运算技巧

Posted decimus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了屯位运算技巧相关的知识,希望对你有一定的参考价值。

 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

















以上是关于屯位运算技巧的主要内容,如果未能解决你的问题,请参考以下文章

VS2015使用技巧 打开代码片段C#部分

26个jQuery代码片段使用技巧

VS中添加自定义代码片段——偷懒小技巧

提效小技巧——记录那些不常用的代码片段

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)