Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. IV. Протокол лапароскопической операции
  2. Mots de liaison. Выражение сравнения.
  3. Активные операции коммерческого банка и их классификация.
  4. Арифметические операции
  5. Арифметические операции
  6. Арифметические операции над функциями, имеющими предел.
  7. Векторы. Операции над векторами (сложение, вычитание, умножение на число), n-мерный вектор. Понятие о векторном пространстве и его базисе.
  8. Вкаких цехах выполняется, выполняются операции по изготовлению продукции, предназначенной для реализации: -основных цехах
  9. Встроенные типы данных, операции над ними
  10. Выявление небно-глоточной недостаточности у детей после операции

В языке 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, так же как и для арифметических операций, а значит, и к одной разрядности.

В нашем примере 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.

Сдвиги

В языке Java есть три операции сдвига двоичных разрядов:

сдвиг влево <<;

сдвиг вправо >>;

беззнаковый сдвиг вправо >>>.

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

Например, операция b1<< 2 сдвинет влево на 2 разряда предварительно повышенное значение 0...00110010 переменной b1, что даст в результате 0...011001000, десятичное 200. Освободившиеся справа разряды заполняются нулями, левые разряды, находящиеся за 32-м битом, теряются.

Операция b2 << 2 сдвинет повышенное значение 1...10011101 на два разряда влево. В результате получим 1...1001110100, десятичное значение —396.

Заметьте, что сдвиг влево на п разрядов эквивалентен умножению числа на 2 в степени n.

Операция b1 >> 2 даст в результате 0...00001100, десятичное 12, а b2 >> 2 — результат 1..11100111, десятичное -25, т. е. слева распространяется старший бит, правые биты теряются. Это так называемый арифметический сдвиг.

Операция беззнакового сдвига во всех случаях ставит слева на освободившиеся места нули, осуществляя логический сдвиг. Но вследствие предварительного повышения это имеет эффект только для нескольких старших разрядов отрицательных чисел. Так, b2 >>> 2 имеет результатом 001...100111, десятичное число 1 073 741 799.

Если же мы хотим получить логический сдвиг исходного значения loomoi переменной b2, т. е., 0...00100111, надо предварительно наложить на b2 маску, обнулив старшие биты: (b2 & 0XFF) >>> 2.




Дата добавления: 2015-09-11; просмотров: 21 | Поможем написать вашу работу | Нарушение авторских прав

Выполнение Java-программы | Библиотеку классов Java API (Application Programming Interface). | Работа с системой программирования | Встроенные типы данных, операции над ними | Язык Java различает прописные и строчные буквы. | Комментарии | Посадова інструкція секретаря керівника. | СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ | I. Загальні положення | II. Завдання та обов'язки |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав