蓝桥杯算法备战(一)——位运算

一.相关符号

&(与)、|(或)、^(异或,二者不同则为1,可以理解为不进位的加法)、~(非,取反)

<<(左移,用符号位填充高位) >>(右移,无>>>) >>>(左移,用0填充高位)

注:对于Int类型数据<<35和<<3是一样的,因为Int类型只有32位(同理,long型超过64就是等价的)

二.相关技巧

1.判断x奇偶数:用x和1进行与运算,x&1结果是1,是奇数;若为0,则是偶数。

2.连续异或^可以消除重复:上面提到两者相同,异或为0,而a^0=a,那,那么多个数进行异或运算时

例如:a^a^b^c^c=b

3.计算十进制转二进制后1的个数的三种方法:

(1)a[i] = x&1;  x>>=1;  把二进制的每一位存放在数组a中,再用一个for循环判断数组里1的个数

(2)思路和第一个方法一样,只不过移动的是1,进行判断

(3)while (x!=0) { x= (x-1)&x; count++; } x-1和x进行与运算,进行几次就有几个1,最后x变成0,代码简洁。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值