adder

node v10.24.1
version: 1.0.0
endpointsharetweet
const gate = require('@runkit/learn/gate/3.0.0') const halfAdder = (a, b) => ({sum: gate.xor(a, b), carry: gate.and(a,b)}) const fullAdder = (a, b, carry) => { const result1 = halfAdder(a, b) const result2 = halfAdder((carry || 0), result1.sum) return {sum: result2.sum, carry: gate.or(result1.carry, result2.carry)} } const multiBitsSum = (inputA, inputB, carryIn) => { let output = [] let carry = carryIn || 0 for (var i = 0; i < inputA.length; i++) { let result = fullAdder(inputA[i], inputB[i], carry) output[i] = result.sum carry = result.carry } return {output: output, carry: carry} } const multiBitsSumByComps = (inputAHigh, inputBHigh, inputALow, inputBLow, carryIn) => { let output = [] let carry = carryIn || 0 const lowResult = multiBitsSum(inputALow, inputBLow, carry) const highResult = multiBitsSum(inputAHigh, inputBHigh, lowResult.carry) return {output: highResult.output.concat(highResult.output), carry: highResult.carry} }
module.exports = { halfAdder, fullAdder, multiBitsSum, multiBitsSumByComps}
Loading…

no comments

    sign in to comment