Рубрики
Без рубрики

Простые биты манипулирования

Глядя на алгоритмы в прошлом, всякий раз, когда я наткнулся на помиренно, как <<, & gt ... Теги с JavaScript, алгоритмы.

Глядя на алгоритмы в прошлом, всякий раз, когда я наткнулся на побитовый оператор, как << , >> , & , |. , ^ Я бы подумал: «Это слишком сложно». Однако со временем изучение удивительно, потому что мы можем начать принимать новые концепции, и они перестают быть недоступными.

Проще говоря, это некоторые «двоичные числа». Когда мы перемещаем 1 влево, предыдущее число умножает на 2.

0001 is 1
0010 is 2
0011 is 3 // 3 is 2 and 1 combined
0100 is 4

Чтобы узнать, почему двоичные для регулярных чисел (десятичных) преобразуются подобные более глубине Проверь это.

Принимать эти основы во внимание операции с бинальями или Битовое манипуляция Позволяет внести модификации или сравнивать разные номера, а также даже делать то же самое с символами, преобразованными в двоичный.

Настолько побитовые операторы похожи на математические операторы или логические операторы, но они имеют дело с двоичными числами.

Как быстрый пример побитовой операции, если мы сделаем 2<<1 Результат 4. Это потому, что левый сдвиг << служит для перемещения всех 1 битов в двоичном номере слева, так:

2 which is 0010

moves left and becomes

4 which is 0100

Так что левая смена << 1 одним пространством, умножает на два.

То же самое с правым сдвигом >> 1 И это просто делится на два.

Теперь с другими операциями & | ^ или ~ Отказ Мы можем сравнить два двоичных номера. И с этим контекстом видео вроде это может иметь больше смысла.

Сопоставление символов в двоичный

Так что для достижения этого мы должны вспомнить, что письма имеют соответствующие коды номеров, называемых кодами ASCII. В JavaScript мы можем получить этот код с .charcodeat. () метод.

Например, строчная буква «A» имеет код ASCII из 97 и строчной буквы «B» составляет 98.

Затем персонаж может быть сопоставлен с двоичным, двигаясь немного, чтобы соответствовать коду ASCII.

let anumberOfLeftShifts = 'a'.charCodeAt(0) - 97 // returns 0 bc 97 - 97

let aInBinary = 1 << anumberOfLeftShifts
// => 0001

let bnumberOfLeftShifts = 'b'.charCodeAt(0) - 97 // returns 1 bc 98 - 97

let aInBinary = 1 << bnumberOfLeftShifts
// => 0010

Таким образом, отображение числа и символ двоичного ввода – это другой процесс, но оба способа позволяют делать битные манипулирования.

В качестве быстрого примера мы можем видеть, имеют ли две строки одинаковыми буквами.

let s1 = "hello"
let s2 = "loeh"

let s1Mask = 0
let s2Mask = 0

for(let i = 0;i

Вот список побитовых операторов в сравнении битов:

  • & И если они одинаковы возвращаются так же, если они разные возвраты 0

  • | Или если они одинаковы возвращаются та же бит, Если они разные возвраты 1

  • ^ Хор, если они одинаковы возвращаются 0, если они разные возвраты 1

Чувствую себя более чем желанию, чтобы добраться до любых идей/комментариев на LinkedIn или Twitter или проверить мой портфолио Отказ

Оригинал: “https://dev.to/santispavajeau/simple-bit-manipulation-516i”