В Java есть два типа правых сдвигов.>>>
присоединит 0 для заполнения пустых мест как для положительных, так и для отрицательных чисел (логическое смещение вправо), а >>
добавит 1 для отрицательных и 0 в случае положительного (расширение знака).
В C и C ++, >>
будет вставлять нули, если число положительное.Однако с отрицательными числами этот случай зависит от реализации.Могут быть присоединены либо нули, либо единицы.
JavaScript ведет себя так же, как Java для >>
и >>>
.
В C # при использовании >>
для отрицательных чисел все выставленные биты, кроме первого, устанавливаются в 0. Первое остается в 1.
Обратите внимание, что для всех вышеперечисленных языков, >>
с положительными числами присоединяет нули.Только случай с отрицательными числами меняется.Кроме того, <<
добавляет нули к битам для всех языков.