Назад Зміст Вперед

Урок 1.6. Тип даних float. Перетворення типів даних

План уроку
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,

.