Запуск следующий код JavaScript показывает 63
в обоих случаях:чем разница между >> и >>> операторы в JavaScript
alert(0xff >> 2);
alert(0xff >>> 2);
Что различия между >>
и >>>
? Их результаты кажутся равными.
Запуск следующий код JavaScript показывает 63
в обоих случаях:чем разница между >> и >>> операторы в JavaScript
alert(0xff >> 2);
alert(0xff >>> 2);
Что различия между >>
и >>>
? Их результаты кажутся равными.
>>
- побитовый оператор, который сдвигает биты вправо. Любые биты справа теряются.
8 = 1000
^-->1
= 0000 = 0
>>>
делает нечто подобное, как >>
, но это беззнаковое, что означает, что она находится в диапазоне от 0 до 2 -1 вместо +/- 2 -1.
Чтобы увидеть результат моего первого заявления в действии, давайте использовать оператор побитового на пол номер:
1.234 >> 0 = 1 // Ok, fraction lost
1.234 >>>0 = 1 // Ok, fraction lost
-1.23 >> 0 = -1 // Ok, fraction lost
-1.23 >>>0 = 4294967295 // (negative numbers are not within the range)
Math.pow(2,31) >> 0 = -2147483648 // 2^31 is out of range
Math.pow(2,31) >>> 0 = 2147483648
Таким образом, когда верхняя граница диапазона превышена, то расчет будет продолжаться на его нижний диапазон и наоборот (например, <<
). На следующем рисунке показано, что происходит, когда вы используете n = (n + 1) >> 0
и >>> 0
, для n
, начиная с самой нижней границы.
// Signed Unsigned
>> >>>
-2147483647 0
-2147483646 1
... ...
2147483646 4294967294
2147483647 4294967295
-2147483647 0
-2147483646 1
Несколько ссылок:
Почему вы ожидаете '8 >> 4' быть 2? – deceze
мой плохой 8/16, так что это действительно 0, но как насчет разницы между >> и >>>? исправлено qeustion – 0x90
@ ZoZo123 Я перефразировал ваш вопрос, чтобы он стал более точным. Надеюсь, вы не против этого;) –