、または、排他的または排他的な演算、および一般的な演算(バイナリ代入、値取り、左シフト、右シフト、剰余を求める、上向き整列、下向き整列)
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->または演算(|)
2.代入0->と非演算(&~)
3.値を取る->演算(&)
4.2を掛ける->左に1桁移動(<<1)
5.2で割る->右に1桁移動(>>1)
6.2で割って余りを求める->と1(&1)
7.上揃え
8.下向きに整える
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