論理演算を用いた計算

論理演算メニュー 【論理積の基本・論理和の基本・否定の基本・排他的論理和・半加算器・全加算器・論理演算のまとめ ほか】

【STEP: 1】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   console.log(A && B);
});
hogeちゃんの画像

(A 且つ B) は(A && B)

【STEP: 2】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   console.log(A || B);
});
hogeちゃんの画像

(A または B) は(A || B)

【STEP: 3】コード

reader.on('close', () => {
   const A = Number(lines[0]);
   console.log(Number(!A));
});
hogeちゃんの画像

(!A) => (A) の true・false を反転。

【STEP: 4】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   console.log(A ^ B);
});
hogeちゃんの画像
A, B の片方が1 の場合 1 を返す。それ以外は 0を返す。

【STEP: 5】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   console.log(Number(!(A && B)));
});
hogeちゃんの画像

(A 且つ B) の true・false を反転。

 

【STEP: 6】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   console.log(Number(!(A || B)));
});
hogeちゃんの画像

(A または B) の true・false を反転。

【STEP: 7】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   console.log(Number(!(A ^ B)));
});
hogeちゃんの画像

(A ^ B) の true・false を反転。

【STEP: 8】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   const [C, S] = [A & B, A ^ B];
   console.log(C, S);
});
hogeちゃんの画像
2進数の下から 1 けた目の計算。

【STEP: 9】コード

reader.on('close', () => {
   const [A, B, C1] = lines[0].split(' ').map(Number);

   function half_adder(a, b) {
      const [c, s] = [a & b, a ^ b];
      return [c, s];
   }
   const [Cx, Sy] = half_adder(A, B);
   const [Cy, S] = half_adder(C1, Sy);
   const C2 = Cx ^ Cy;
   console.log(C2, S);
});
hogeちゃんの画像

2進数の下から 1 けた目と 2 けた目の計算。ややこしい…。

【FINAL】コード

reader.on('close', () => {
   const [A, B, C, D] = lines[0].split(' ').map(Number);
  // console.log(!((!A && !B) || !C) ^ D);
  // ↓ド・モルガンの法則
   console.log((((A || B) && C) ^ D));
});
hogeちゃんの画像

ド・モルガンの法則は 解説のページに掲載されていました。

コメント