단일 정수에 30 개 이상의 플래그 (0/1)를 저장해야합니다. 내가 할 수이 잘 작동단일 정수에 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
은 역순으로 (칭찬 또는 음수) 들어가기 때문에 30 개 이상의 플래그를 만들 수 없습니다.
이렇게 할 방법이 있습니까?
무엇이 문제입니까? 비트는 여전히 올바르게 저장됩니다. – fafl
'FLAG_16 '의 정의는 무엇입니까? 우리는 이것을 다음과 같이 가정해야합니다 : var FLAG_16 = 1 << 16; – Ahmad
javasacript에는 정수의 개념이 없습니다. 비트 연산자를 사용하면 음수가 아닌 31 비트를 얻을 수 있습니다 (1 << 0-1 << 30 - 31 값) 그리고 여전히 1 << 31을 신중하게 사용할 수 있습니다 ... 그래서 32 이상을 가지고 있다면 더 이상 창조 할 필요가 있습니다 –