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