Подтвердить что ты не робот

Как вы устанавливаете, очищаете и переключаете один бит в JavaScript?

Как установить, очистить, переключить и проверить бит в JavaScript?

4b9b3361

Ответ 1

Чтобы получить битовую маску:

var mask = 1 << 5; // gets the 6th bit

Чтобы проверить, установлен ли бит:

if ((n & mask) != 0) {
  // bit is set
} else {
  // bit is not set
}

Чтобы установить бит:

n |= mask;

Чтобы очистить бит:

n &= ~mask;

Чтобы переключить бит:

n ^= mask;

Обратитесь к поразрядным операторам Javascript.

Ответ 2

Я хочу добавить некоторые вещи (спасибо @cletus)

function bit_test(num, bit){
    return ((num>>bit) % 2 != 0)
}

function bit_set(num, bit){
    return num | 1<<bit;
}

function bit_clear(num, bit){
    return num & ~(1<<bit);
}

function bit_toggle(num, bit){
    return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);
}

Ответ 3

Я построил класс BitSet с помощью информации @cletus:

function BitSet() {
    this.n = 0;
}

BitSet.prototype.set = function(p) {
    this.n |= (1 << p);
}

BitSet.prototype.test = function(p) {
    return (this.n & (1 << p)) !== 0;
}

BitSet.prototype.clear = function(p) {
    this.n &= ~(1 << p);
}

BitSet.prototype.toggle = function(p) {
    this.n ^= (1 << p);
}