关于位运算

什么是位运算

  程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作,也就是对数据进行二进制的计算;

位运算是怎么计算的

1、&

      将两个数字转化为二进制数字,对每个数位上的数字进行比较,如果两个数位上的数字相同则取其值,如果两个数位上的数字不同则取0,如111&100=100,100&101=100;

2、|

     将二进制的数字的每个数位的数字进行比较,只要两个数字中有一个是同数位上是1,则这个数位的值取1,如:111|101=111,

110&110=110;

3、^

    运算规律,将同数位的数字看为boolear值,0为false,1为true。0和0相当于两个false结果为ture,但是这个运算符是取反,所以结果为false,也就是0,同理1和1,结果为ture,取反结果为0,1和0,结果为false,取反为true也就是1,例子:110^101=011,

101^111=010,101^101=000;

4、<<

   左移,运算符后面是几就向做移动几位,如:101<<2=10100;

5、右移

  右移跟左移同理,如;101>>2=1;

6、~

  反码,就是所有数位的值1变为0,0变为1,也就是给一个数取反-1,如:~110=001,~101=010;

位运算能做什么

1、乘除2

  左移或右移n位相当于乘或除2的n次方,例如:12>>1=6,12>>2=3;

2、判断奇偶数

  将该数字与1按位与,如果返回的结果是1,则是奇数,如果返回的结果是0则是偶数,如:5&1=1,4&1=0;

3、取余

  只不过取余是除以2的整数倍取余,a&b相当于a除以2的(b-1)次方获得的余数,如:5&3=1;

4、求相反数

  ~a+1就是获得当前数字a的相反数,如~-1+1=1,~100+1=-100;

  

猜你喜欢

转载自blog.csdn.net/qq_40801158/article/details/82178810