JSFiddle - React, Tailwind, and code Playground

by Hans PUFAL

JavaScript

function nand (x, y) { return +!(+x && +y); }
  function not (x) { return nand (+x, 1); }
  function xor (x, y) { return nand (nand (x, y), nand (not (x), not (y))); }
  
  function xprime (NX, ZX, X) { return xor (NX, nand (X, ZX)); }
  
  function bstring (n, l) {
    return (new Array (l).join ('0') + n.toString (2)).slice (-l);
  }

  console.log ('nand');
  for (var v, n = 4; n--;) {
    v = bstring (n, 2).split ('');
    console.log (v.join ('  ') + '    ' + nand.apply (null, v));
  }  

  console.log ('xor');
  for (var v, n = 4; n--;) {
    v = bstring (n, 2).split ('');
    console.log (v.join ('  ') + '    ' + xor.apply (null, v));
  }  

  console.log ('xprime');
  for (var v, n = 8; n--;) {
    v = bstring (n, 3).split ('');
    console.log (v.join ('  ') + '    ' + xprime.apply (null, v));
  }