【algorithm】有趣的逻辑运算:逻辑与和逻辑异或

2019-04-14 19:40发布

Date: 2018.10.31


之前学了很久的数电,今天终于发现了其魅力所在,有点后知后觉了,哈哈…
最近发现一个有趣的算法:
奇数与1异或相当于减1,偶数与1异或相当于加1。
伪代码如下: if( a & 1 !=0 ) b = a - 1; // odd else b = a + 1; // even 上述代码等效于或者可以简化为: b = a ^ 1; 由此可见,通过这个算法可以将复杂的逻辑判断转化成简单的逻辑运算,提高运算效率。 另外,上述奇偶性的判断也是采用的逻辑运算实现的
通常,我们如下实现奇偶性: if ( a % 2 == 0) printf("a is even. "); else printf("s is odd. "); 采用逻辑运算简化为: if( a & 1 == 0) printf("a is even. "); else printf("a is odd. "); 逻辑与的另一个用法:利用逻辑与进行大小比较 if( a >= (1<<=b) ) printf("a is larger or equal than 2^b. "); else printf("a is lesser than 2^b. "); 通过逻辑与实现大小比较: if( a & (1<<b) == 0) printf("a is lesser than 2^b. "); else printf("a is larger or equal than 2^b. ");

THE END!