function calculate(a, b, mode) {
const bitsA = getBits(a);
const bitsB = getBits(b);
const calculate = calculator[mode]();
let result = 0;
let count = 0;
let A, B;
do {
A = bitsA.next();
B = bitsB.next();
result += calculate(A.value, B.value) << count;
count += 1;
} while (!(A.done && B.done));
return result;
}