Побитовый оператор и значение
важность: 5
Почему побитовые операции в примерах ниже не меняют число? Что они делают внутри?
alert( 123 ^ 0 ); // 123
alert( 0 ^ 123 ); // 123
alert( ~~123 ); // 123
-
Операция
a^b
ставит бит результата в1
, если на соответствующей битовой позиции вa
илиb
(но не одновременно) стоит1
.Так как в
0
везде стоят нули, то биты берутся в точности как во втором аргументе. -
Первое побитовое НЕ
~
превращает0
в1
, а1
в0
. А второе НЕ превращает ещё раз, в итоге получается как было.