Что >> делает в ActionScript 3.0? - PullRequest
       2

Что >> делает в ActionScript 3.0?

1 голос
/ 08 марта 2011

Пример его использования приведен здесь

boundsCentre = new Vector3D(stageWidth >> 1,stageHeight >> 1, 200.0);

Спасибо.

Ответы [ 2 ]

4 голосов
/ 08 марта 2011

>> - правильный оператор сдвига битов. a >> b сместит значения битов a b битов вправо.

если a = 8 и b = 2, a >> b выдаст 2, поскольку a представлен 1000, сдвинутые на 2 позиции значения 10, что представляет 2 в двоичном виде.

Что еще более важно, поскольку ActionScript является вариантом ECMAScript, значения типа Number будут преобразованы из 64-разрядного представления в 32-разрядное представление и затем сдвинуты. Кроме того, (AFAIK, кажется, не могу найти его в справочнике) переполнения при сдвиге битов в ECMAScript не определены.

stageWidth >> 1 по существу делит stageWidth на 2, что означает, что это вектор к центру сцены. В других языках x >> 1 - более быстрый метод деления на 2, но в ECMAScript нет значительного изменения производительности и возможности неоднозначности. Из-за этого лучше просто кодировать желаемый эффект как:

stageWidth / 2

Так гораздо понятнее.

2 голосов
/ 08 марта 2011

Это битовый сдвиг вправо.См. эту страницу

Битовый сдвиг вправо - это, по сути, целочисленное деление на 2 для каждой сдвигаемой вами позиции.x >> 2 делится на 4, x >> 3 делится на 8 и т. д. И наоборот, << - это сдвиг влево, который является умножением целого числа на 2. </p>

Рассмотрим этот пример, число 42 в двоичном виде

00101010

Сдвиг вправо на одну позицию приводит к этому:

00010101

Что составляет 21.

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