1.求该数中1的个数int getsum(int x){ int cnt = 0 ; while(x) { cnt ++ ; x &= x-1 ; } return cnt ;}View Code下面是高效一点的1 int getsum(in...
分类:
其他好文 时间:
2014-08-26 17:05:46
阅读次数:
243
位运算位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。其中,按位取反运算符是单目运算符,其余均为双目运算符。位运算符的优先级从高到低,依次为~、&、...
分类:
编程语言 时间:
2014-08-26 13:16:36
阅读次数:
317
位运算有以下几种:~ & ^ |,为 按位取反 按位与 按位异或 按位或,优先级从左到右依次降低。按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x & 0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x & 077。按位或运算的...
分类:
其他好文 时间:
2014-08-26 11:22:55
阅读次数:
205
位移位运算符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为...
分类:
其他好文 时间:
2014-08-24 14:15:02
阅读次数:
182
最近在研究一些字符串匹配算法,也是由于工作上的需要,强力推荐一本书《柔性字符串匹配》,一本很好的书。网上可以随时搜索到。还是说正题吧。BNDM算法的思想来源于BDM算法思想,类似于shitf-and和kmp之间的区别吧(也不知道是不是准确,有错望大家多指点)。前者都是用位运算模拟后者。好了,那就.....
分类:
其他好文 时间:
2014-08-22 22:26:09
阅读次数:
296
参考:点击打开链接
基本的操作:
and ----- &
or ----- |
取反 ----- ~
异或 ----- ^
同或 ----- ~(^) // 异或后求反
>(右移)
1)再使用链式前向星的时候,为了方便找到出度结点。在一条边添加后,直接添加反向边。正向边的下标为偶数,反向边为奇数。则^可方便找到。(最后一位取反)
2)...
分类:
其他好文 时间:
2014-08-22 16:19:59
阅读次数:
174
1,给定两个整数集合A和B,每个集合都包含20亿个不同整数,请给出快速计算A∩B的算法,算法可使用外存,但是要求占用内存不能超过4GB。答:基本思路:利用bitmap以及位运算来实现。思考过程:整数最大为2的32次方-1;如果每位依次记录一个数,那么需要int的个数是(2的32次方-1)/32=1亿...
分类:
其他好文 时间:
2014-08-22 12:47:16
阅读次数:
159
题意:给n个点,保证图联通,给点相连的距离,求一个最多的点,这些点之间的距离都是相同的。分析:下面的代码是我们房间第一的大神的,写的很简洁,我的思路和他的一样,但是我不知道错哪了。思路是暴力枚举,最多有10个点,先用floyed计算出每两点之间的距离,然后用位运算暴力枚举,枚举每个点是否加入进去,并...
分类:
其他好文 时间:
2014-08-22 12:39:56
阅读次数:
169
1000 1100&取位,置0|置1^置反>生成mask1000 1100取第三位0000 0100第三位置01111 1011第三位置10000 0100第三位置反0000 0100
分类:
其他好文 时间:
2014-08-21 16:33:04
阅读次数:
157
题意:找出现次数不同于其他数的数。
超时了一次,后来知道了位运算。。。长见识了
0^0 =0
0^1=1
1^0=1
1^1=0
0^1^1 = 0
可以发现 任何数异或0还是他本身。
一个数异或另一个数偶数次还是他本身。
代码(位运算都600+ms):
#include
#include
int main()
{
int a, b...
分类:
其他好文 时间:
2014-08-21 11:34:14
阅读次数:
173