Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Карабин П. -> "Язык программирования Java- Создание интерактивных приложений для Internet " -> 10

Язык программирования Java- Создание интерактивных приложений для Internet - Карабин П.

Карабин П. Язык программирования Java- Создание интерактивных приложений для Internet — М.: Бук Пресс, 2006. — 112 c.
ISBN 5-8321-0143-9
Скачать (прямая ссылка): yazikprogramirovnajava2006.pdf
Предыдущая << 1 .. 4 5 6 7 8 9 < 10 > 11 12 13 14 15 16 .. 35 >> Следующая

В следующей программе байтовое значение преобразуется
в строку, содержащую его шестнадцатеричное представление. Обратите внимание — сдвинутое значение приходится маскировать, то есть логически умножать на значение 0x0f, для
57
того, чтобы очистить заполняемые в результате расширения знака биты и понизить значение до пределов, допустимых при индексировании массива шестнадцатеричных цифр.
class HexByte {
static public void main(String args[ ] ) {
char hex[] = { 'O', '1, '2', '3',
'4', '5', '6', '7', '8', '9', 'a',
'b', 'c', 'd', 'e', 'f };
byte b = (byte) 0xf1;
System.out.println(“b = Ox” + hex[(b » 4) & OxOf] + hex[b & OxOf]);
} }
Ниже приведен результат работы этой программы:
С:\> java HexByte b = Oxf1
Беззнаковый сдвиг вправо
Часто требуется, чтобы при сдвиге вправо расширение знакового разряда не происходило, а освобождающиеся левые разряды просто заполнялись бы нулями.
class ByteUShift {
static public void main(String args[]) {
58
char hex[] = { 'O', ' 1 ’ , '2', '3',
' 4', '5', '6', ' 7', '8', '9', 'a',
'b', 'c', 'd', 'e', 'f* };
byte b = (byte) Oxf1;
byte с = (byte) (b >> 4);
byte d = (byte) (b >> 4);
byte e = (byte) ((b & Oxff) » 4);
System, out. printlnC b = Ox” +
hex(b » 4) & OxOf] +
hex[b & OxOf]);
System, out. printing1 b >> 4 = Ox”
+ hex[(c >> 4) & OxOf] + hex[c &
OxOf]);
System.out.println(“b >>> 4 = Ox” + hex[(d >> 4) & OxOf] + hex[d &
OxOf]);
System.out.println(“(b & Oxff) » 4
= Ox” +
hex[(e >> 4) & OxOf] + hex[e &
OxOf]);
} }
Для этого примера переменную b можно было бы инициализировать произвольным отрицательным числом, мы использовали число с шестнадцатеричным представлением Oxfl. Переменной с присваивается результат знакового сдвига b вправо на 4 разряда. Как и
59
ожидалось, расширение знакового разряда приводит к тому, что Oxfl превращается в Oxff. Затем в переменную d заносится результат беззнакового сдвига b вправо на 4 разряда. Можно было бы ожидать, что в результате d содержит OxOf, однако на деле мы снова получаем Oxff. Это — результат расширения знакового разряда, выполненного при автоматическом повышении типа переменной b до int перед операцией сдвига вправо. Наконец, в выражении для переменной е нам удается добиться желаемого результата — значения OxOf. Для этого нам пришлось перед сдвигом вправо логически умножить значение переменной b на маску Oxff, очистив таким образом старшие разряды, заполненные при автоматическом повышении типа. Обратите внимание, что при этом уже нет необходимости использовать беззнаковый сдвиг вправо, поскольку мы знаем состояние знакового бита после операции AND.
С: \> java ByteUShift b = Oxfl b » 4 = Oxff b >>> 4 = Oxff b & Oxff) » 4 = OxOf
60
Битовые операторы присваивания
Так же, как и в случае арифметических операторов, у всех бинарных битовых операторов есть родственная форма, позволяющая автоматически присваивать результат операции левому операнду. В следующем примере создаются несколько целых переменных, с которыми с помощью операторов, указанных выше, выполняются различные операции.
class OpBitEquals {
public static void main(String args[ ]) {
int a = 1;
int b = 2;
int с = 3;
a |= 4;
b »= 1;
с «- 1;
a "= c;
System, out. printlnC'a = " + a);
System, out. printlnC'b = " + b);
System, out. printlnC'c = " + c);
} }
61
Результаты исполнения программы таковы:
С:\> Java OpBitEquals а = 3 b = 1 с - 6
Операторы отношения
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен ниже.
Оператор Результат
== равно
!= не равно
> больше
< меньше
>= больше или равно
<= меньше или равно
Значения любых типов, включая целые и вещественные числа, символы, логические значения и ссылки, можно сравнивать, используя оператор проверки на равенство == и неравенство !=. Обратите внимание — в языке Java, так же, как в С и C++ проверка на равенство обозначается последовательностью (==). Один знак (=) — это оператор присваивания.
62
Булевы логические операторы
Булевы логические операторы, сводка которых приведена ниже, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.
Оператор Результат
& логическое И (AND)
&= И (AND) с присваиванием
| логическое ИЛИ (OR)
= ИЛИ (OR) с присваиванием
А логическое исключающее ИЛИ (XOR)
А= исключающее ИЛИ (XOR) с присваиванием
|| оператор OR быстрой оценки выражений (short
circuit OR)
== равно
&& оператор AND быстрой оценки выражений
short circuit AND)
!= не равно
! логическое унарное отрицание (NOT)
?: тернарный оператор if-then-else
Результаты воздействия логических операторов на различные комбинации значений операндов показаны в таблице.
А В OR AND XOR NOTA
false false false false false true
true false true false true false
false true true false true true
63
true true true true false false
Программа, приведенная ниже, практически полностью повторяет уже знакомый вам пример Bit Logic. Только но на этот раз мы работаем с булевыми логическими значениями.
Предыдущая << 1 .. 4 5 6 7 8 9 < 10 > 11 12 13 14 15 16 .. 35 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.