Binary arithmetic in Javascript

by Richard Hunter

HTML

<h1>Binary Arithmetic in Javascript</h1>

JavaScript

function binaryToDec(binaryNum) {
	return parseInt(binaryNum, 2);
}

function decToBinary(decNum) {
    return (decNum >>> 0).toString(2);
}

var addr = '255.255.255.255';
ipAddr = parseDottedDec(addr);


function parseDottedDec(addr) {
	let result;
  
	result = addr.split('.').reduce((memo, section, index) => {
		return memo + Math.pow(256, 3 - index) *  parseInt(section, 10)
  }, 0);
  
  return result;
}

function toDottedDec(decimalNum) {
	const base = 256;
  let result = decimalNum;
  let tmp = [];
  
  while(result > 1) {
  	let tmpResult = parseInt(result / base, 10);
    let remainder = result % base;
    result = tmpResult;
    tmp.push(remainder);
  }
	return tmp.join('.');
}




function getNetworkAddress(addr, cidr) {
	let result;
	const mask = getMask(cidr);

	return addr & mask;
}

function getMask(cidr) {
	const bar = 4294967295;
  
	return bar << 32 - cidr;
}

console.log(toDottedDec(4294967295));

const ipAddress = '192.25.45.8';
console.log('take an ip address', ipAddress);
const ipAddressDec = parseDottedDec(ipAddress);
console.log('convert to a decimal representation', ipAddressDec);
const ipAddressBin = decToBinary(ipAddressDec);
console.log('convert to binary form', ipAddressBin);
const networkAddress = getNetworkAddress(ipAddressDec, 8);
console.log('network address is', toDottedDec(networkAddress))

const cidr = 8;

//const networkAddress = getNetworkAddress(address, cidr);
//console.log(networkAddress);