Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
20 »> 00 = 00000000000000000000000000010100 = 20 20 »> 01 = 00000000000000000000000000001010 = 10 20 »> 02 = 00000000000000000000000000000101 = 5 20 »> 03 = 00000000000000000000000000000010 = 2 20 »> 04 = 00000000000000000000000000000001 = 1 20 »> 05 = 00000000000000000000000000000000 = о
Очевидно, что для положительного аргумента операторы >> и >>> Работают совершенно одинаково. Дальнейший сдвиг на большее количество позиций будет также давать нулевой результат.
// Сдвиг вправо для отрицательного числа -21 // Оператор >>
-21 » 00 =11111111111111111111111111101011= -21 -21 »01 = 11111111111111111111111111110101 =-11 -21 »02 = 11111111111111111111111111111010 = -6 -21 » 03 =11111111111111111111111111111101 =-3 -21 »04 = 11111111111111111111111111111110 = -2 -21 »05 = 11111111111111111111111111111111 =-1 // Оператор »>
-21 »> 00 = 11111111111111111111111111101011 = -21
-21 >» 01 =01111111111111111111111111110101 =2147483637
-21 |
>» 02: |
=00111111111111111111111111111010= |
1073741818 |
|
-21 |
»> |
03 |
= 00011111111111111111111111111101 : |
= 536870909 |
-21 |
»> |
04 |
=00001111111111111111111111111110= |
= 268435454 |
-21 |
»> |
05 |
= 00000111111111111111111111111111 = |
=134217727 |
-21 |
»> |
24 |
= 00000000000000000000000011111111 |
= 255 |
-21 |
»> |
25 |
= 00000000000000000000000001111111 |
= 127 |
-21 |
»> |
26 |
= 00000000000000000000000000111111 |
= 63 |
-21 |
»> |
27 |
= 00000000000000000000000000011111 |
= 31 |
-21 |
»> |
28 |
= 00000000000000000000000000001111 |
= 15 |
-21 |
»> |
29 |
= 00000000000000000000000000000111 |
= 7 |
-21 |
>» |
30 |
=00000000000000000000000000000011 |
= 3 |
-21 |
»> |
31 |
= 00000000000000000000000000000001 |
= 1 |
Как видно из примеров, эти операции аналогичны делению на 2п. Причем, если для положительных аргументов с ростом п результат закономерно стремится к 0, то для отрицательных предельным значением является -1.
Заключение
В этой лекции были рассмотрены основы лексического анализа программ Java. Для их записи применяется универсальная кодировка ишсос1е,позволяющая использовать любой язык помимо традиционного английского. Еще раз напомним, что использование Unicode возможно и необходимо в следующих конструкциях:
• комментарии;
• идентификаторы;
• символьные и строковые литералы.
Остальные же (пробелы, ключевые слова, числовые, булевские и null-ли-тералы, разделители и операторы) легко записываются с применением лишь ASCII-символов. В то же время любой Unicode-символ также можно задать в виде специальной последовательности ASCII-символов.
Во время анализа компилятор выделяет из текста программы <про-белы> (были рассмотрены все символы, которые рассматриваются как пробелы) и комментарии,которые полностью удаляются из кода (были рассмотрены все виды комментариев, в частности комментарий разработчика). Пробелы и все виды комментариев служат для разбиения текста программы на лексемы. Были рассмотрены все виды лексем,в том числе все виды литералов.
В дополнении были рассмотрены особенности применения различных операторов.
Вариант 1
Как записать в Java-программе символ с кодом 514?
□ '514'
□ \u0546
□ \u222
□ \u0222
Какие из перечисленных идентификаторов являются корректными?
□ abc
□ lab
□ _bc
□ _1с$ас
□ $ас
□ for_
□ Int
□ byte
Каким будет результат следующих действий?
1/0 1./0 i/o-
'\n'+V
□ все 4 операции деления вызовут ошибку деления на 0, сложение даст "\п\г"
□ результатом всех 4 операций деления будет POSITIVEJNnNITf, сложение даст '\п\г'
□ операция 1/0 приведет K/P^MeTM4^b^pos,T|VE INFINITY; следующие 3 операции будут иметь результат РОЫ ivt_
последнее сложение даст 23
Вариант 2
Вариант 3
Сколько пробелов в следующем примере кода: intx = 3; int у=1; int z = х+у;
□ 7
□ 8
□ 9
□ 11
2. Являются ли следующие слова ключевыми:
□ true
□ goto
□ null
□ const
□ false
Чему будет равно следующее выражение и значение переменной х после вычислений? int х=0;
print(++x==x++);
□ true
□ false
1. Сколько комментариев в следующем примере кода: int х = О; /* text // text /*
int у=1; // text */ // text */
□ 1 блочный, 0 строчных П 1 блочный, 1 строчный Г~1 1 блочный, 2 строчных П 2 блочных, 3 строчных
2. Равны ли следующие числа:
□ 5 и 05
□ 9 и 09
□ ЮиОЮ •□ 0x5Am90L
3. Чему будет равно следующее выражение и значения переменных х и у после вычислений?
int х=0, у=0;
print((++x==1) || (у++==1));
□ true
□ false