首页 > 其他 > 详细

位运算骚操作

时间:2021-07-05 23:16:19      阅读:41      评论:0      收藏:0      [点我收藏+]

1. 枚举子集

unsigned int s;
for(int n=s;n ;n=(n-1)&s)
    printf(n);
printf(n);

2.找出重复次数奇偶性不同的数字

 例如2串数字,除x外完全相同,但第2串数字添加了一个x,找出x;

连续异或运算性质:

    a ^ a= 0

    0 ^ a =a

所以把所有数字连续异或,得到的为x

int ret;
for(int x: s1)
    ret^=x;
for(int x: s2)
    ret^=x;
return ret;

3.连续异或消去

 0^1^2^3 =0 

a ^ a =0

所以 4k^(4k+1)^(4k+2)^(4k+3)=0

连续n个数的异或结果,只有4种情况;

4k

4K^(4k+1) = 1

4k^(4k+1)^(4k+2) = 4k+3

4k^(4k+1)^(4k+2)^(4k+3)=0

 

位运算骚操作

原文:https://www.cnblogs.com/fdbwymz/p/14972106.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!