-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2adderSubtraction.js
More file actions
33 lines (27 loc) · 873 Bytes
/
Copy path2adderSubtraction.js
File metadata and controls
33 lines (27 loc) · 873 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Two-bit adder/subtractor (manual chaining of two full adders)
let a = [1, 1];
let b = [1, 1];
let sub = 0; // control: 1 for subtraction, 0 for addition
// For subtraction, we invert b and set initial carry to 1
let carry = sub ? 1 : 0;
let result = [];
// Invert b bit if sub == 1 using xor (acts as a controlled inverter)
let b0 = b[1] ^ sub;
let sumLSB = a[1] ^ b0 ^ carry;
let carryOut = (a[1] & b0) | (b0 & carry) | (a[1] & carry);
result[1] = sumLSB;
carry = carryOut;
let b1 = b[0] ^ sub;
let sumMSB = a[0] ^ b1 ^ carry;
let carryOut2 = (a[0] & b1) | (b1 & carry) | (a[0] & carry);
result[0] = sumMSB;
carry = carryOut2;
if (carry === 1) {
result.unshift(1);
}
// Display the result
console.log(' a:', a);
console.log(' b:', b);
console.log(' sub:', sub);
console.log('------------');
console.log('result:', result);