C++基础知识补充

1.位知识

<<:左移,将所有二进制状态的数左移,eg:5<<1  ,00000110往左移动了一位变成00001100,可以达到整个数放大两倍的作用,相当于乘2;

>>:右移,将所有二进制状态的数右移,eg:>>1  ,往右移动了一位,可以达到整个数放大两倍的作用,相当于乘2;

~:取反,将二进制状态中的0变成1,1变成0,eg:~5,00000110变成11111001

|:或,两个数的运算,同位有1便为1,都为0则为0,eg:5|4,(00000110)|(00000100) 后为00000110,结果为5;

&:且,同位都为1才为1,有0则为0,eg:5&4,(00000110)|(00000100) 后为00000100,结果为4;

^:异或,同位相同为0,不同为1,eg:5^4,(00000110)^(00000100) 后为00000010果为2;异或的性质:任何数与0异或为任何数,任何数与1异或则取反。

应用:1.快速乘除2的幂次,左移1位乘2,右移1位除2.

            2.实现某位的翻转,只需要与某位上为1其他位为0的数进行异或,eg:00000110)^(00000100) 得到00000010实现了将第3位数翻转。

            3.将数a,b交换。 a=a^b, b=b^a(此时已经实现b变成a),a^b(将a变成b)。

            4.指定某个位置的数为1: R| = (1<

               指定某个位置的数为0:R&=~(1<

 

2.注释

#if  0......#endif    对中间的某段代码进行注释

#if  1......#endif    取消注释

会比/*.....*/好用 

 

 

未完待续。。。。

你可能感兴趣的:(C++,C++,基础知识)