2011年5月22日

位运算 之(2) 按位异或(xor)^ 操作

摘要: 文章作者:ktyanny文章来源:ktyanny转载请注明,谢谢合作。 按位异或运算俗称:xor运算1、xor的基本知识我们来看看xor运算的机理:1001011001011----àaxor 1011010001110----àb------------------------- 0010001000101---àc看了上面的式子,体会到异或运算的原理了吧,就是:0和1异或0都不变,异或1则取反。很容易理解,如果b中的某位为1,那么a xor b 的作用是在a相应的位进行取反操作。用通俗易懂的语言来讲就是xor运算通常用于对二进制的特定一位进行取反操作。我们再看 阅读全文

posted @ 2011-05-22 22:46 lonelycatcher 阅读(863) 评论(0) 推荐(0) 编辑

位运算 之(1) 按位与(AND)& 操作

摘要: 文章作者:ktyanny文章来源:ktyanny转载请注明,谢谢合作。 由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。按位与(Bitwise AND),运算符号为&a&b 的操作的结果:a、b中对应位同时为1,则对应结果位也为1、例如:10010001101000101011001111000& 111111100000000 --------------------------------------------- 10101100000000对10101100000000进行右移8位得到的是101011,这就得到了a的8~15位的掩码了。那 阅读全文

posted @ 2011-05-22 22:45 lonelycatcher 阅读(1001) 评论(0) 推荐(0) 编辑

POJ 2811 熄灯问题

摘要: 这道题主要考察的是枚举算法#include<iostream>#include<string.h>usingnamespace std;int N;int map[7][8];int orignal[7][8];int pre[7][8];int sequence[7];voidpress(int i,int j)//按下坐标为 (i,j)的按钮{ map[i][j]=(map[i][j]+1)%2; map[i-1][j]=(map[i-1][j]+1)%2; map[i+1][j]=(map[i+1][j]+1)%2; map[i][j-1]=(map[i][j-1 阅读全文

posted @ 2011-05-22 22:36 lonelycatcher 阅读(714) 评论(0) 推荐(0) 编辑

C++中标准string类的用法

摘要: C++ String 的用法C++ string: 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下:#include <string> //注意这里不是string.h string.h是C字符串 阅读全文

posted @ 2011-05-22 22:24 lonelycatcher 阅读(364) 评论(0) 推荐(0) 编辑

异或位运算

摘要: 来自Lvsi‘s home 以前一直忽视了异或这些小运算,今天做到HDU的2095时才发现异或的功能,这里只讲它的一小部分; 异或时一种逻辑运算,它的真值表如下 1 ^ 1 == 0; 1 ^ 0 == 1; 0 ^ 1 == 1; 0 ^ 0 == 0; 异或实质上是将参与运算的两个数据,按对应的二进制逐位进行逻辑异或运算,只有当对应位的二进制数互斥时对应为的结果才为真; 下面介绍异或运算的几种性质: 1 交换律:a ^ b ^ c = a ^ c ^ b;(很多人忽视的性质,杭电2095就是利用这个性质做的,再小菜鸟的博客里面有 ); 2 结合律:a ^ b = b ^ a;(这个相信大家 阅读全文

posted @ 2011-05-22 22:23 lonelycatcher 阅读(1714) 评论(0) 推荐(0) 编辑

导航