0

Я недавно читал эту книгу «Наддуваемая графика Javascript», и это просто потрясающе. В нем есть несколько действительно интересных концепций и примеров с использованием элемента canvas html5 и другой графики. Он также использует библиотеку jquery и учит, как создавать собственные плагины. Однако в большинстве своих примеров он использует bitwise operators, и мне трудно понять их. Он объясняет их использование, но не полностью. Наиболее используемые в его примерах:
Javascript Поразрядные регулярные операторы

 x >> 0 
     x << y 
     x >>> 0 
     x & y 
     x | y 
     x^y 

У меня возникли некоторые проблемы с пониманием их использования и их преимущества, так что я просто хочу знать, что их эквивалент с помощью регулярных операторов. Как я могу заменить x >> y чем-то, используя x%y или что-то в этом роде.

+0

Они объясняют, что они делают, но единственным ясным примером является x >> y. Также они не вникают в детали производительности и их преимущества. – lomas09

+0

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

ответ

2

Вот объяснение каждого из них. Во всех случаях операторы преобразуют свои аргументы в целые значения, если это необходимо. Результатом всегда является целочисленное значение (или NaN, если любой аргумент не конвертируется в целочисленное значение).

x >> 0 

Это сдвигает 0 бит вправо, заполняя слева знаковым битом. Это трюк, используемый для обрезания x целых чисел. (Это то же самое, как если Math.floor(x)x не является отрицательным, и то же самое, как если Math.ceil(x)x не является положительным.)

x << y 

Это сдвигает y битов влево, заполняя справа с нуля. Это эквивалентно умножению на 2 y. Он ведет себя несколько неожиданно, когда y < 0: он использует нижние пять бит представления комплемента двух из y как положительное значение сдвига.

x >>> 0 

Это сдвигает x ничем вообще, но является результатом преобразования x в беззнаковое целое значение. (Например, это (-1) >>> 0 4294967295 = 2 -1.)

x & y 

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

x | y 

Это берет побитовое ИЛИ значений в x и y. Каждый бит результата равен 1 тогда и только тогда, когда один или оба соответствующих бита x и y - один.

x^y 

Это принимает XOR значений в x и y. Каждый бит результата равен 1 тогда и только тогда, когда соответствующие биты x и y различны.

+0

Что делать, если x сдвинут на другое значение, а не на 0.Это 'x >> y' – lomas09

+0

@ lomas09 - Это то же самое, что и целочисленное деление на 2^y. Как и в случае '<<', в сдвиге используются только нижние пять бит 'y'. –

+0

Вы только что упростили мой день. Спасибо, я действительно ценю это – lomas09

Смежные вопросы