Java для всех [Алексей Васильев] (pdf) читать постранично, страница - 17

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

нулю, для отрицательных — единице.
Перевод из двоичной системы счисления положительного числа с позиционной
записью bn bn–1 ... b2 b1 b0, где параметры bk (k = 0, 1, ..., n) могут принимать значения 0
или 1, выполняется так: bn bn–1 ... b2 b1 b0 = b020 + b121 + b222 + ... + bn–1 2n–1 + bn2n .
Для перевода отрицательного двоичного числа в десятичное представление производится побитовое инвертирование кода (все нули меняются на единицы, а единицы
меняются на нули), полученное двоичное число переводится в десятичную систему,
к нему прибавляется единица и добавляется знак «минус».
Чтобы определить двоичный код для отрицательного числа (заданного в десятичной системе), модуль числа переводим в двоичный код, инвертируем этот код
и прибавляем единицу.
Таблица 1.5. Побитовые операторы Java
Оператор

Описание

&

Бинарный оператор побитовое и. Результатом выражения вида a&b
с целочисленными операндами a и b является целое число. Биты в этом
числе вычисляются сравнением соответствующих битов в представлении значений операндов a и b. Если каждый из двух сравниваемых битов
равен 1, то результатом (значение бита) является 1. В противном случае
соответствующий бит равен 0

|

Бинарный оператор побитовое или. Результатом выражения вида a|b
с целочисленными операндами a и b является целое число. Биты в этом
числе вычисляются сравнением соответствующих битов в представлении
значений операндов a и b. Если хотя бы один из двух сравниваемых битов
равен 1, то результатом (значение бита) является 1. В противном случае
результат (значение бита) равен 0

^

Бинарный оператор побитовое исключающее или. Результатом выражения
вида a^b с целочисленными операндами a и b является целое число. Биты
в числе-результате вычисляются сравнением соответствующих битов
в представлении значений операндов a и b. Если один и только один из
двух сравниваемых битов равен 1, то результатом (значением бита) является 1. В противном случае результат (значение бита) равен 0

Основные операторы    41

Оператор

Описание

~

Унарный оператор побитовая инверсия. Результатом выражения вида ~a
является целое число, бинарный код которого получается заменой в бинарном коде операнда a нулей на единицы и единиц на нули

>>

Бинарный оператор сдвиг вправо. Результатом выражения вида a>>n является число, получаемое сдвигом вправо в бинарном представлении первого операнда a на количество битов, определяемых вторым операндом n.
Исходное значение первого операнда при этом не меняется. Младшие
биты теряются, а старшие заполняются значением знакового бита



Бинарный оператор беззнаковый сдвиг вправо. Результатом выражения
вида a>>>n является число, получаемое сдвигом вправо в позиционном
представлении первого операнда a на количество битов, определяемых
вторым операндом n. Исходное значение первого операнда при этом не
меняется. Младшие биты теряются, а старшие заполняются нулями



НА ЗАМЕТКУ
Для бинарных побитовых операторов (как и для арифметических) существуют
составные операторы присваивания. Так, выражение вида a&=b является эквивалентом (с поправкой на приведение типа) команды a=a&b, выражение a^=b
эквивалентно команде a=a^b, и так далее.

Помимо перечисленных выше операторов, в Java есть единственный тернарный
оператор (у оператора три операнда). Формально оператор обозначается как ?:.
Синтаксис вызова этого оператора следующий:
условие?значение:значение

Первым операндом указывается некоторое условие (выражение, возвращающее
логическое значение). Если условие истинно (значение true), тернарный оператор
результатом возвращает значение, указанное после вопросительного знака. Если
условие ложно (значение false), тернарный оператор результатом возвращает
значение после двоеточия.



ПОДРОБНОСТИ
Несколько замечаний по поводу оператора присваивания =. В Java оператор
присваивания возвращает значение. Команда вида x=y выполняется следующим
образом: вычисляется значение y и оно записывается в переменную x. Это же
значение является значением всего выражения x=y. Поэтому допустимой является,

42   Глава 1. Основы Java
например, команда вида x=y=z. В этом случае значение переменной z присваивается сначала переменной y, а затем значение выражения y=z (оно же значение
переменной y) присваивается переменной x.

В табл. 1.6 приведены данные о приоритете различных операторов в Java.
Таблица 1.6. Приоритеты операторов в Java
Приоритет

Операторы

1

Круглые скобки ( ), квадратные скобки [ ] и оператор «точка»

2

Инкремент ++, декремент --, побитовая инверсия ~ и логическое отрицание !

3

Умножение *, деление / и вычисление остатка %

4

Сложение + и вычитание -

5

Побитовые сдвиги >>, >>

6

Больше >, больше или равно >=, меньше или равно t?(S1+S2)/(T-t):-1;
System.out.println("Скорость на втором участке:");
//