位操作
mzx1317557721
这个作者很懒,什么都没留下…
展开
-
如何取出一个数的第一个非零比特位?
取出一个数的第一个非零比特位,最简单的想法就是通过右移与1,记录右移次数,然后将1左移回去。int first_bit(int n){ int count = 0;//计数器 while(n^1)//第一位为零 { n >>=1; count++; } rerutn (1<<count);}...原创 2017-04-23 13:04:01 · 6624 阅读 · 0 评论 -
一组数字中只有两个数单独出现,其他数成对出现,找出这两个数
在写过一个数字单独出现后,知道全体异或后成对出现的数字将抵消,这次将得到两个单独出现的数字的结果得到两个单独出现数字异或的结果后,把两个数字分离出来就可以了,但通过x^y得到其中一个数字需要另一个数字,无法分离,但是我们知道异或为1的位两个数该位必然不同,通过这个比特位把数字分为两组,再分别异或就可以得到这两个数了void check_num(int *arr, int sz,int *x,int原创 2017-04-23 14:03:53 · 925 阅读 · 0 评论