數邏和C++基本運算篇
CH1:數邏基本運算篇
前言:
這些東西不會很難,有些公式和特性可以試著推倒並理解和記住,千萬別死背(跟記不一樣)
原理:
not , or, and , xor ...布林運算式,它只用真或假判斷
因此整數型態會被換成布林,然後再做運算
bitwise_not , bitwise_and 位元運算式,是一個位元對應一個位元
因此布林型態先會被轉成10進位整數,整數將會被換成2進位數字,然後再做運算
整數型態
注意:
C,C++沒有nor , nand ,xnor 運算子,必須用多個運算子組合
運算子:
not:
C,C++:!,not
口訣:假真顛倒
!F=T;
!T=F;
!!b=b;
!!a is not necessary equivalent to a
bitwise_not , complement sign , destructable class sign:
C,C++:~
口訣:假真顛倒
~0=-1
~1=-2
~~a=a
or:
C,C++: || , or
口訣:全假為假
F||F=F;
T||F=T;
F||T=T;
T||T=T;
b||T=T;
a||T=!!a;
bitwise_or:
口訣:全假為假
C,C++:|
0|0=0;
0|1=1;
1|0=1;
1|1=1;
a|0=a;
b|0=b;(int type)
a|1=a+(a-1)%2;
a|3=a+(a-1)%4;
a|7=a+(a-1)%8;
a|(pow(2.0,n)-1)=a+(a-1)%pow(2.0,n);
and:
C,C++: &&,and
口訣:1個甲子園1個假像(1假為假)
bitwise_and:
C,C++: & , and
口訣:1個甲子園1個假像(1假為假)
F&&F=F;
T&&F=F;
F&&T=F;
T&&T=T;
0&0=0;
0&1=0;
1&0=0;
1&1=1;
[property]
a&0=0;
b&1=b;
b&0=0;
[formula]
a&1=a%2;
a&3=a%4;
a&(pow(2.0,n)-1)=a%(pow(2.0,n);
xor:
C,C++:xor
[def] a xor c= (a and (not c)) or ((not a) and c)
口訣:異極相吸(磁鐵)
F xor F =T
T xor F= F;
F xor T =F;
T xor T=T;
b xor T= b;
b xor F= !b;
a xor T= !!a;
a xor F =!a;
bitwise_xor:
C,C++:^
0^0=0;
0^1=1;
1^0=1;
1^1=0;
[property]
原來性和相反性:
b^0=b;
b^1=!b;
a^1=~a;
a^0=a;
a^a=0;
b^b=0;
重複性:
a^a^a=a;
b^b^b=b;
交換性:
a^c=c^a;
xnor:
C,C++:X
口訣:負負得正
xnor=not xor
Comments
Post a Comment