Я должен хранить более 30 флагов (0/1) в одно целое число. Я могу создать 30 флаговых масок в Javascript, используя побитовый оператор, например, нижеХранение флагов 30+ в одном целом
var FLAG_1 = 1 << 0; // 1
var FLAG_2 = 1 << 1; // 2
...
...
var FLAG_30 = 1 << 30;
var user1 = FLAG_1 | FLAG_16;
console.log(FLAG_1 & user1); // true
Это прекрасно работает. Но я не могу создать более 30 флагов, потому что 1 << 31
идет в обратном порядке (комплимент или отрицательное число).
Есть ли способ сделать это?
В чем проблема? Биты сохраняются должным образом. – fafl
Каково определение 'FLAG_16'? мы должны считать это следующим: 'var FLAG_16 = 1 << 16;' – Ahmad
javasacript не имеет понятия целого числа - сказав, что, используя побитовые операторы, вы можете получить 31 бит, не переходя в отрицательные числа (1 << от 0 до 1 << 30 - это 31 значение), и вы все равно можете использовать 1 << 31 тщательно ... так что у вас есть 32 ... более того, и вам нужно будет создать творческий –