論理演算メニュー 【論理積の基本・論理和の基本・否定の基本・排他的論理和・半加算器・全加算器・論理演算のまとめ ほか】
【STEP: 1】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
console.log(A && B);
});
(A 且つ B) は(A && B)
。
【STEP: 2】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
console.log(A || B);
});
(A または B) は(A || B)
。
【STEP: 3】コード
reader.on('close', () => {
const A = Number(lines[0]);
console.log(Number(!A));
});
(!A) => (A) の true・false を反転。
【STEP: 4】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
console.log(A ^ B);
});
A, B の片方が1 の場合 1 を返す。それ以外は 0を返す。
【STEP: 5】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
console.log(Number(!(A && B)));
});
(A 且つ B) の true・false を反転。
【STEP: 6】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
console.log(Number(!(A || B)));
});
(A または B) の true・false を反転。
【STEP: 7】コード
reader.on('close', () => {
const [A, B] = lines[0].split(' ').map(Number);
console.log(Number(!(A ^ B)));
});
(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);
});
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);
});
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));
});
ド・モルガンの法則は 解説のページに掲載されていました。
コメント