Binary 2 - 8-bit add-sub

by black strings

HTML

A: <input id="inputA" type="text" value="0" maxlength="3" />
<br>
B: <input id="inputB" type="text" value="0" maxlength="3" />
<br>
<button id="addBtn">ADD</button>
<button id="subBtn">SUB</button>
<br>
Result:
<br>
<div id="result">
pending...
</div>

CSS

#result {
  border:thin solid red;
  padding:3px;
}

JavaScript

var addBtn = document.getElementById("addBtn");
addBtn.addEventListener('click', () => {
	var isAdd = true;
	action(isAdd);
});

var subBtn = document.getElementById("subBtn");
subBtn.addEventListener('click', () => {
	var isAdd = false;
	action(isAdd);
});

// add or subtract base on isAdd flag
function action(isAdd){
		// get the inputs as integers from string
	var a = document.getElementById("inputA").value;
  var b = document.getElementById("inputB").value;
  if (!isNaN(a) && !isNaN(b)) {
  	// convert to binary if both are numbers
    a = dec2bin(parseInt(a));
    b = dec2bin(parseInt(b));
    
    var res;
    if (isAdd) {
    	res = addTwoBinary(a,b);
    } else {
    	res = subTwoBinary(a,b);
    }
    // array to string, then remove comma from string
    document.getElementById("result").innerHTML = res.toString().replace(/,/g, '');
  } else {
  	document.getElementById("result").innerHTML = 'A or B is not a number';
  }
}

// returns an inverse binary, used with subtraction
// arr = Array<int>
function inverseBinary(arr){
	// flip the digits from 1 to 0, and vice versa
	for(var i=0; i<arr.length; i++){
  	var value = arr[i];
    switch(value){
    	case 0:
      	arr[i] = 1;
      	break;
      case 1:
      	arr[i] = 0;
      	break;
      default:
      	throw new Error('inverse binary failed, case not supported');
    }
  }
  
  // add 1 after the inverse
  return addTwoBinary(arr, dec2bin(1));
}

// subtract two binary - 8-bit only
function subTwoBinary(a,b){
	b = inverseBinary(b);
	return addTwoBinary(a,b);
}

// add two binary - 8-bit only
function addTwoBinary(a,b){
	var finalArray = b.slice();	// final array
  var carry = 0;
  
  // add from right to left
  for(var i=a.length-1; i>=0; i--) {
  	var sum = a[i] + b[i] + carry;
    switch(sum){
    	case 0:
      	finalArray[i] = 0;
        carry = 0;
      	break;
      case 1:
      	finalArray[i] = 1;
        carry = 0;
      	break;
      case 2:
      	finalArray[i] = 0;
        carry = 1;
   ...