flags

by Richard Hunter

JavaScript

function b(dec) {
  return (dec >>> 0).toString(2).padStart(4, '0');
}

function d(binary) {
  return parseInt(binary, 2);
}

let flags = 0;

const flagA = 1 << 3; // 1
const flagB = 1 << 2; // 2
const flagC = 1 << 1; // 4
const flagD = 1 << 0; // 8

function isSet(flag) {
	return !!(flags & flag);
}

function oneOf(flag1, flag2) {
	return !!(flags & (flag1 | flag2));
}

function setFlag(flag) {
	flags |= flag;
}

function unsetFlag(flag) {
  flags &= ~flag;
}

function setFlags(flag1, flag2) {
	flags |= flag1 | flag2;
}

function printState() {
	console.log(b(flags));
}

//setFlag(flagA);
//setFlag(flagB);
setFlag(flagA);

console.log(oneOf(flagA, flagB));