Bitfoolish Operations в Javascript.

У всех нас, вероятно, никогда не было необходимости выполнять одну побитовую операцию как разработчикам, но некоторые из наиболее важных операций / функций, используемых в программировании, используют побитовые операции, причем наиболее популярным (как мне кажется) является шифрование.

Побитовые операции - это, за неимением лучшего слова, преднамеренные операции, выполняемые непосредственно с наименьшим представлением данных, которые компьютер может обработать… битами, с использованием определенных операторов.

Бит, байт, бит.

Итак, в то время как мы имеем дело с десятичными знаками (с основанием 10) при повседневной обработке и интерпретации данных, побитовые операции имеют дело с двоичными значениями… 0 и 1 и бывают 7 типов:

P.S. Мы будем использовать битовые представления 4 и 5 в наших примерах, которые равны 0100 и 0101 соответственно.

  1. И

Каждый бит сравнивается с битами другого с помощью оператора &, и возвращается 1, где оба сравниваемых бита равны 1.

0100 = 4 in base 10. So, 4 & 5 = 4.

2. OR

Каждый бит сравнивается с помощью оператора |, и возвращается 1, если любой из сравниваемых битов имеет 1.

0101 = 5 in base 10. So, 4 | 5 = 5

3. XOR

Каждый бит сравнивается с помощью оператора ^, и возвращается 1, когда один из сравниваемых битов равен 1, а не обоим сразу.

0001 = 1 in base 10. So 4 ^ 5 = 1.

4. НЕ

Инвертирует биты с помощью оператора ~.

~4 = ~0100 = 1011 = -5 (your eyes do not deceive you. All NOT operations yield -(a + 1) as their value)

5. ЛЕВЫЙ SHIFT (shl)

Каждый бит сдвигается влево на указанную величину, а к хвосту добавляется 0 для каждого шага с использованием оператора ‹*, а голова обрезается.

4 << 1 === 0100 << 1 = 1000 = 8
5 << 2 === 0101 << 2 = 0001 0100 = 20

6. СДВИГ ВПРАВО (shr)

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

4 >> 1 === 0100 >> 1 = 0010 = 2

7. СДВИГ ВПРАВО ЗАПОЛНИТЬ НУЛЕВОЙ

Каждый бит сдвигается вправо на указанную величину, а к заголовку добавляется 0, независимо от того, какой бит был крайним левым, с помощью оператора ›››.

4 >>> 1 === 0100 >>> 1 = 0010 = 2.

Можно ли прекратить это наказание?

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

У вас есть мероприятие Javascript, и вы ищете докладчиков, или вы работаете над чем-то отличным и вам нужна техническая помощь? Пожалуйста… напишите мне в твиттере, @cozzbie