、または、排他的または排他的な演算、および一般的な演算(バイナリ代入、値取り、左シフト、右シフト、剰余を求める、上向き整列、下向き整列)


AND
1.と演算(&)
演算に参加する2つのデータは、バイナリビットでAND演算を行います.
演算規則:0&0=0;   0&1=0;    1&0=0;     1&1=1;
すなわち、両方とも「1」であり、結果は「1」であり、そうでなければ0である
例えば、3&5である0000 0011&0000 0101=0000 0001であるため、3&5は1に値する.
例えば、9&5である0000 1001(9のバイナリ符号化)&000001(5のバイナリ符号化)=000001(1のバイナリ符号化)では、9&5=1が見られる.
2.または演算(|)
 
演算に参加する2つのオブジェクトは、バイナリビットでOR演算されます.
 
演算規則:0|0=0;  0|1=1;   1|0=1;    1|1=1;
 
すなわち,演算に参加する2つのオブジェクトのうち1つが1であれば,その値は1である.
 
例えば、3|5である0000 0011|0000 0101=0000 0111であるため、3|5の値は7である. 
例えば、9|5書き込み可能な演算式は、00001001|00000101=000001101(10進数13)可視9|5=13
3.排他的論理和演算(^)
 
演算に参加する2つのデータは、バイナリビットで「異和」演算を行います.
 
演算規則:0^0=0;   0^1=1;   1^0=1;   1^1=0;
すなわち、演算に参加する2つのオブジェクトは、2つの対応するビットが「異」(値が異なる)である場合、そのビットの結果は1であり、そうでない場合は0である.
 
たとえば、9^5は、00001001^00000101=000001100(10進数12)可視9^5=12と書くことができます.
常用演算:(バイナリ賦値、取値、左シフト、右シフト、残数求め、上向き整列、下向き整列)
1.代入1->または演算(|)
     :40 | (1<<1)  = 42

   0010 1000

 | 0000 0010 

------------------

   0010 1010

2.代入0->と非演算(&~)
  : 42 & ~(1<<1) = 40

0010 1010 & ~0000 0010 

 ==》

  0010 1010 

& 1111 1110
---------------  

  0010 1000

3.値を取る->演算(&)
  :42 & 1<<1 = 2

  0010 1010 

& 0000 0010 

-----------------

  0000 0010

4.2を掛ける->左に1桁移動(<<1)
  :43 * 2 = 43 <> 0101 0110 = 86

5.2で割る->右に1桁移動(>>1)
  :43 / 2 = 43 >> 1

0010 1011 >> 0001 0101 = 21

6.2で割って余りを求める->と1(&1)
  :43 % 2 = 43 & 1 = 1

  0010 1011

& 0000 0001

--------------- 

  0000 0001

7.上揃え
int a , int b => (a + b - 1) / b 

  :

a = 8, b = 3 => 2;  

a = 9, b = 3 => 3; 

a = 10, b = 3 => 4;

8.下向きに整える
int a , int b => a / b