Scala. Профессиональное программирование [Мартин Одерски] (pdf) читать постранично, страница - 36
Книга в формате pdf! Изображения и текст могут не отображаться!
[Настройки текста] [Cбросить фильтры]
в инфиксной форме записи операторов, сдвигают разряды целочисленного
значения, указанные слева от оператора, на количество разрядов, указанное
в целочисленном значении справа от оператора. При сдвиге влево и беззнако
вом сдвиге вправо разряды по мере сдвига заполняются нулями. При сдвиге
вправо разряды указанного слева значения по мере сдвига заполняются зна
чением самого старшего разряда (разряда знака). Вот несколько примеров:
-1 >> 31 // -1: Int
-1 >>> 31 // 1: Int
1 > 31, в числе –1 происходит сдвиг вправо на 31 разряд
ную позицию. В значении типа Int содержатся 32 разряда, поэтому данная
операция, по сути, перемещает самый левый разряд до тех пор, пока тот не
станет самым правым1. Поскольку метод >> выполняет заполнение по мере
сдвига единицами ввиду того, что самый левый разряд числа –1 — это 1,
результат получается идентичным исходному левому операнду и состоит
из 32 единичных разрядов, или равняется –1. Во втором примере, –1 >>> 31,
самый левый разряд опять сдвигается вправо в самую правую позицию, од
нако на сей раз освобождающиеся разряды заполняются нулями. Поэтому
результат в двоичном виде получается 00000000000000000000000000000001,
или 1. В последнем примере, 1
Последние комментарии
56 минут 55 секунд назад
59 минут назад
1 день 22 часов назад
1 день 23 часов назад
2 дней 20 минут назад
2 дней 11 часов назад