// @NOTE other ways to do it
// function decimalToBinary(dec) {
// return (dec >>> 0).toString(2)
// }
// function createBinaryString(nMask) {
// // nMask must be between -2147483648 and 2147483647
// for (
// var nFlag = 0, nShifted = nMask, sMask = '';
// nFlag < 32;
// nFlag++, sMask += String(nShifted >>> 31), nShifted <<= 1
// );
// return sMask
// }
//
// // https://github.com/rzcoder/data-struct
// String.prototype.bin = function() {
// return parseInt(this, 2)
// }
// Number.prototype.bin = function() {
// var sign = this < 0 ? '-' : ''
// var result = Math.abs(this).toString(2)
// while (result.length < 32) {
// result = '0' + result
// }
// return sign + result
// }