битовый счетчик на один байт javascript - PullRequest
1 голос
/ 26 марта 2020

Я хочу использовать биты со значением 2 ^ 4-2 ^ 8 в элементе массива Typed 16Uint для использования в качестве двоичного счетчика до 16.

0000111100000000 ->15
0000111000000000 ->14
0000110100000000 ->13
...
0000000000000000 ->0

- существует ли простая побитовая операция, которая будет считать в двоичном коде? Моя текущая стратегия состоит в том, чтобы извлечь биты как число, добавить единицу - выполнить некоторую проверку ошибок, затем установить биты в оригинале с & 0 и заменить эту часть на | или маску?

cellBinary = iterate(cellBinary, 16, 4);
function iterate(cellBinary, start, length)
    {
    let number = extractBits(cellBinary, start, length);
    if(number < 15)
        {
        number++;
    }
    what = eraseIterator(what);
    what = what|number;
    return what;
}
function extractBits(what, start, length)
    {
    return ((1 << start ) -1) & (what >> (length - 1));
}
function eraseIterator(what)
    {
    what&16^1; //also iffy if this will work as intended.
    what&32^1; //this is supposed to set 16-128 to 0.
    what&64^1;
    what&128^1; 
    return what;
}

Есть ли лучше способ сделать это? примечание: код - это пример, я ищу стратегию, а не ошибку.

1 Ответ

1 голос
/ 26 марта 2020

Вы можете добавить правильную сумму напрямую: 256, 100000000 в двоичном виде.

Например,

000000000000 + 100000000 ->
000100000000
001000000000
001100000000
...
111100000000

биты, оцениваемые в 2 ^ 4-2 ^ 8

Это будет означать следующую последовательность:

00000000
00010000
00100000
00110000
...
11110000

Или, другими словами, добавить 16.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...