Java для программистов и разработчиков  
Архив от 16-05-2008   

Выпуск 7 - Операторы сдвига

Здравствуйте, дорогие читатели!

Продолжаем тему операций в Java. Сегодня мы рассмотрим операторы сдвига и нюансы их работы.

В Java есть операторы сдвига. Операторы << и >> позаимствованы из С/C++. Кроме того, Java обладает своим новым оператором сдвига >>>>.

Операторы сдвига присущи системам, которые могут выравнивать биты, прочтённые из IO портов или зартсываемые в IO порты. Это также быстрое умножение или деление на степень двойки. Преимущество операторов сдвига в Java - это независимость от платформы. Поэтому вы можете использовать их не беспокоясь ни о чём.

Основы сдвига

Сдвиг - это, по сути, простейшая операция: мы берём последовательность битов и двигаем её влево или вправо. Больше всего конфуза вызывает оператор >>>>. Но о нём мы поговорим чуть позже.

Операторы сдвига могут применяться лишь к целым числам, то есть к типам int или long. Следующая таблица иллюстрирует базовый механизм сдвига.

Таблица 1: Идея сдвига
Исходные данные

192

Бинарное представление 00000000 00000000 00000000 11000000
Сдвиг влево на 1 бит

0

00000000 00000000 00000001 1000000?
Сдвиг вправо на бит ?0000000 00000000 00000000 01100000 0
Сдвиг влево на 4 бита 0000 00000000 00000000 00001100 0000????
Исходные данные

-192

Бинарное представление 11111111 11111111 11111111 01000000
Сдвиг влево на 1 бит

1

11111111 11111111 11111110 1000000?
Сдвиг вправо на бит ?1111111 11111111 11111111 10100000 0

Таблица показывает фундаментальную идею сдвига: перемещение битов относительно их позиций. Это как очередь в магазине: как только один человек совершил покупку и отшёл, вся очередь сдвинулась и позиции всех участников очереди изменились.

Однако, глядя на таблицу, возникают три вопроса вопроса:


Дорогие читатели! Если у вас возникают вопросы по тексту рассылки, я с удовольствием на них отвечу. Мой почтовый адрес идёт последней строкой в данном выпуске (at означает @). Кроме того, присылайте мне интересующие вас темы, которые я могла бы осветить в рассылке, делитесь опытом или просто комментируйте. Я также буду рада и благодарна вам, если вы проголосуете за этот выпуск. Форма голосования находится внизу выпуска.

Всего доброго,
Наталия Македа
natalia.macheda at gmail.com

Внимание!
Письмо может быть опубликовано полностью или частично, если в нём нет явного запрета на это.

По вопросам партнёрства обращаться на е-майл natalia.macheda at gmail.com


© Наталия Македа 2008
Все материалы рассылки защищены авторским правом. Любая перепечатка или использование материалов рассылки в коммерческих целях возможна лишь с письменного согласия автора. При некоммерческом использовании ссылка на выпуск обязательна.