位运算相关题目

来源:互联网 发布:西门子工业软件怎么样 编辑:程序博客网 时间:2024/05/24 06:56

刷题刷到的,用位运算解决问题的题目,感觉确实不错啊

1、输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

【说明】这个题以前刷题的时候遇到过选择题,没有把人家的思路记下来,今天又看到了,总结在这里

x&(x-1)可以将整数最右边的1变成0,通过这个小技巧,我们只要循环判断n=n&(n-1)是否为0,即可统计1的个数。

 int  NumberOf1(int n) {         int cnt=0;         while(n)         {             cnt++;             n=n&(n-1);         }         return cnt;     }

2、用一条语句判断一个整数是不是2的整数次方。

if(n&(n-1)==0) return true;


3、输入两个整数m,n,计算需要改变m的二进制表示中的多少位才能得到n?

int x=m^n; return NumberOf1(x);  

忘记出处了,对不起作者啊!!要是找到了一定贴上出处~~


0 0
原创粉丝点击