數邏和C++基本運算篇

 CH1:數邏基本運算篇

前言:

這些東西不會很難,有些公式和特性可以試著推倒並理解和記住,千萬別死背(跟記不一樣)


原理:

not , or, and , xor ...布林運算式,它只用真或假判斷

因此整數型態會被換成布林,然後再做運算


bitwise_not , bitwise_and 位元運算式,是一個位元對應一個位元

因此布林型態先會被轉成10進位整數,整數將會被換成2進位數字,然後再做運算

整數型態


注意:

C,C++沒有nor ,  nand ,xnor 運算子,必須用多個運算子組合


運算子:

let a is a real number, b is a boolean type

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