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<<n),指定R上的第n位的数为1;

               指定某个位置的数为0:R&=~(1<<n),指定R上的第n位数为0

 

2.注释

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

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

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

 

 

未完待续。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值