План уроку
1.Використання
доповнювальних кодів для додавання знакових чисел. Реалізація віднімання шляхом
зміни знаку змінної та додавання.
2.Вихід за
межі розрядної сітки (ознака переповнення). Розширення знаку числа.
3.Особливості
арифметичних операцій з числами типів byte, short (причина проблем –
арифметико-логічний пристрій з виходом типу int) (class Formats_2).
4.Особливості
використання цілих літералів типів int, long (class Formats_3).
5.Тип даних float. Особливості використання дробових літералів типів float, double (class Formats_4).
Література для
класної роботи:
[Шилдт]: с.79 (п.).
Завдання для
класної роботи:
[metod книга], ст.61, № 5.5.3, варіант 24 (п.2):
В додатковому (доповнювальному) кодi виконати аpифметичну опеpацiю додавання знакових двобайтових
опеpандiв X та Y, пpедставлених в пpямому кодi. Результат пеpевести в пpямий
код. Визначити наявнiсть або вiдсутнiсть пеpеповнення (перевищення діапазону представлення).
1) X = 6721, Y = EDE5 – прямі коди
Рішення. Переведемо змінні у
двійкову форму:
X = 0110 0111 0010 0001, Y = 1110 1101 1110
0101.
Змінна X є додатною, тобто її
доповнювальний та прямий коди співпадають. Змінна Y є від’ємною,
визначимо її доповнювальний код:
Y = 1001 0010 0001 1011.
Додамо доповнювальні коди змінних:
0110 0111 0010 0001
1001 0010 0001 1011
----------------------------
1111 1001 0011
1100
Переведемо від’ємний результат у
прямий код:
1000 0110 1100 0100
Переповнення немає (до старшого (знакового) біту та з
нього надходять однакові (нульові) біти )
Зробимо перевірку в десяткових кодах:
26401+(-28133) = -1732.
2)X=D1F5, Y =A889 – прямі коди
Рішення. Переведемо змінні у
двійкову форму:
X = 1101 0001 1111 0101, Y = 1010 1000 1000
1001.
Змінні X та Y є від’ємними, визначимо їхні доповнювальні коди:
X = 1010 1110 0000 1011
Y = 1101 0111 0111 0111
Додамо доповнювальні коди змінних:
1010 1110 0000 1011
1101 0111 0111 0111
----------------------------
11000 01011000 0010
Переведемо від’ємний результат у
прямий код:
1111 1010
0111 1110
Переповнення немає (до старшого (знакового) біту та з
нього надходять однакові (одиничні) біти )
Зробимо перевірку в десяткових кодах:
-20981+(-10377) = -31358.
3)X=D5, Y =EB03 – прямі коди
Рішення. Переведемо змінні у
двійкову форму:
X = 1101 0101, Y = 1110 1011 0000 0011.
Змінні X та Y є від’ємними, визначимо їхні доповнювальні коди:
X = 1010 1011
Y = 1001 0100 1111 1101
Розширимо знак змінної X до двох байтів
X = 1111 1111 1010 1011
Додамо доповнювальні коди змінних:
1111 1111 1010 1011
1001 0100 1111 1101
----------------------------
11001 01001010 1000
Переведемо від’ємний результат у
прямий код:
1110 1011 0101 1000
Переповнення немає (до старшого (знакового) біту та з
нього надходять однакові (одиничні) біти )
Зробимо перевірку в десяткових кодах:
-85+(-27395) = -27480.
4)X=26, Y =865E – прямі коди
Рішення. Переведемо змінні у
двійкову форму:
X = 0010 0110, Y = 1000 0110 0101 1110.
Змінна X є додатною, тобто її
доповнювальний та прямий коди співпадають. Змінна Y є від’ємною,
визначимо її доповнювальний код:
Y = 1111 1001 1010 0010
Розширимо знак змінної X до двох байтів
X = 0000 0000 0010 0110
Додамо доповнювальні коди змінних:
0000 0000 0010 0110
1111 1001 1010 0010
----------------------------
1111 1001 1100 1000
Переведемо від’ємний результат у
прямий код:
1000 0110 0011 1000
Переповнення немає (до старшого (знакового) біту та з
нього надходять однакові (нульові) біти )
Зробимо перевірку в десяткових кодах:
38+(-1630) = -1592.
Література для домашньої роботи:
[Шилдт], с. 78…80,
[Хорстманн, т.1], ст.65,
[Вязовик],
гл.3, ст.10…12,
гл.4, с.12…14,16,
гл.7, ст.4, 5,
[metod книга], ст.57...59.
Завдання для домашньої роботи:
[metod книга], ст.61, № 5.5.3.
Тестові завдання для домашньої роботи:
[task-mughal], № 2.6, 3.2, 3.6, 3.13,
[Sangera], ch.2: № 2, 4, 7,
ch.5: № l, 3, 4,
[Heller], AssesmentTest: № 19, 24,
ch.1: № 1, 9, 10, 16, 17,
ch.4: № 17,18,
[Jaworsky], p.30: № 16…20, 22,