Хранить в char, операция & булева и не зависит от того 0b11 или 3 в операндах.
const a = 0b1010, b = 0b1000;// 10, 8
(10&8) == (a&b); // true
//распаковать
let flags = a.toString(2).split('').map(Number);//Array(4) [ 1, 0, 1, 0 ]
flags[2] = 0; //изменить
//упаковать
let mask = parseInt(flags.join(''),2); // 8
// в базе хранить 8
Если есть возможность хранить в меньшем объёме, то храните в типе размером 4 бита (tinyint(4) в mySQL к примеру). Хотя байт итак уже мизерный размер для данных + резерв на будущее будет.