Иллюстрированный самоучитель по Java

Операции над целыми типами

Операции сравнения

В языке Java шесть обычных операций сравнения целых чисел по величине:

  • больше >;
  • меньше <;
  • больше или равно >=;
  • меньше или равно <=;
  • равно ==;
  • не равно !=.

Сдвоенные символы записываются без пробелов, их нельзя переставлять местами, запись будет неверной.

Результат сравнения – логическое значение: true, в результате, например, сравнения 3!= 5; или false, например, в результате сравнения 3 == 5.

Для записи сложных сравнений следует привлекать логические.операции. Например, в вычислениях часто приходится делать проверки вида а < х < b. Подобная запись на языке Java приведет к сообщению об ошибке, поскольку первое сравнение, а < х, даст true или false, a Java не знает, больше это, чем b, или меньше. В данном случае следует написать выражение (а < х) && (х < b), причем здесь скобки можно опустить, написать просто а < х && х < b, но об этом немного позднее.

Побитовые операции

Иногда приходится изменять значения отдельных битов в целых данных. Это выполняется с помощью побитовых (bitwise) операций путем наложения маски. В языке Java есть четыре побитовые операции:

  • дополнение (complement) ~ (тильда);
  • побитовая конъюнкция (bitwise AND) &;
  • побитовая дизъюнкция (bitwise OR) |;
  • побитовое исключающее ИЛИ (bitwise XOR) ^.

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

Таблица 1.3. Побитовые операции.

n1 n2 ~n1 n1 & n2 n1 | n2 n1 ^ n2
1 1 0 1 1 0
1 0 0 0 1 1
0 1 1 0 1 1
0 0 1 0 0 0

В нашем примере b1 == 50, двоичное представление 00110010, b2 == -99, двоичное представление 10011101. Перед операцией происходит повышение до типа int. Получаем представления из 32-х разрядов для b1-0…00110010, для b2-1…l0011101. В результате побитовых операций получаем:

  • ~b2 == 98, двоичное представление 0…01100010;
  • b1 & b2 == 16, двоичное представление 0…00010000;
  • b1 | b2 == – 65, двоичное представление 1…10111111;
  • b1 ^ b2 == – 81, двоичное представление 1…10101111.

Двоичное представление каждого результата занимает 32 бита.

Заметьте, что дополнение ~х всегда эквивалентно (-x)-1.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.