論理積
2進数で11100011と00111001の論理積を求める。
1ビットずつ論理積を求める。
1ビットずつ論理積を求める。
1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | |
- | - | - | - | - | - | - | - | - |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
#include <iostream> #include <fstream> using namespace std; /* コンパイルできないときは上の3行を #include <iostream.h> #include <fstream.h> に変えてみてください。 */ int main(){ int a,b,ans; /* int型の変数 a,b,ans double型、float型を使って論理演算しようとすると、コンパイルエラーになる。*/ a = 0xe3; // 11100011 b = 0x39; // &00111001 // --------- ans = a & b; // 00100001 cout << "a & b = 0x" << hex << ans << endl; // hexを上記のようにおくと、16進数で表示される。 return 0; }
出力結果
a & b = 0x21
論理和
2進数で11100011と00111001の論理和を求める。
1ビットずつ論理和を求める。
1ビットずつ論理和を求める。
1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |
| | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
- | - | - | - | - | - | - | - | - |
1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
#include <iostream> #include <fstream> using namespace std; /* コンパイルできないときは上の3行を #include <iostream.h> #include <fstream.h> に変えてみてください。 */ int main(){ int a,b,ans; /* int型の変数 a,b,ans double型、float型を使って論理演算しようとすると、コンパイルエラーになる。*/ a = 0xe3; // 11100011 b = 0x39; // |00111001 // --------- ans = a | b; // 11111011 cout << "a | b = 0x" << hex << ans << endl; // hexを上記のようにおくと、16進数で表示される。 return 0; }
出力結果
a | b = 0xfb