ЗМІСТ
ЗМІСТ 3
Лабораторна робота №1 4
Лабораторна робота № 2 6
ЛАБОРАТОРНА РОБОТА № 3 14
ЛАБОРАТОРНА РОБОТА № 4 17
ЛАБОРАТОРНА РОБОТА № 5 19
ЛАБОРАТОРНА РОБОТА № 6 23
ЛАБОРАТОРНА РОБОТА № 7 26
ЛАБОРАТОРНА РОБОТА № 8 29
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 33
Лабораторна робота №1
Тема: внутрішнє подання числових даних.
Мета: отримати та закріпити знання про внутрішнє (машинне) подання числових типів даних у мовах програмування.
Теми для попередньої роботи:
інформація та її подання в ЕОМ;
адресація пам’яті;
числові типи даних: цілі та дійсні;
похибки подання дійсних чисел;
статичні структури даних - масиви.
Загальні відомості
Дані цілого типу зберігаються у пам’яті ЕОМ у додатковому коді. Самий старший біт самого старшого байта пам’яті, що виділяється для зберігання цілих чисел, вважається знаковим.
Дані дійсних типів подаються у пам’яті у вигляді таких складових: знак мантиси, нормалізована мантиса та характеристика. Усі складові записуються у прямому коді.
Характеристика (Х) визначається так: Х = 2n-1 + р – 1,
де р – порядок числа, що визначається при його нормалізації;
n – кількість розрядів, що виділяються на характеристику, визначається типом.
Нормалізована мантиса (М) належить інтервалу: 1 ≤ М < 2. Ціла частина нормалізованої мантиси, як правило, у пам’ять не записується. Це так звана схована одиниця. Самий старший біт самого старшого байта пам’яті, що виділяється для зберігання дійсних чисел, є знаковим.
Типове завдання
Видати на монітор двійкове подання даних цілого типу без знака.
Текст програми
#include <iostream>
#include <conio.h>
using namespace std;
void BYTE(unsigned char A) // виведення вмісту байта
{
for(int bit = 128; bit >= 1; bit >>= 1)
cout << (A & bit ? '1' : '0');
cout << ' ';
}
void main (void)
{
system("chcp 1251 > nul"); // для роботи з кирилицею
unsigned x;
cout<<"Уведіть ціле число без знака: " ;
cin >> x;
unsigned char *p = (unsigned char*) &x;
for(int byte = 0; byte < sizeof(unsigned); byte++, p++ )
BYTE(*p);
cout << endl;
getch();
}
Результат роботи програми
Уведіть ціле число без знака: 258
00000010 00000001 00000000 00000000
Індивідуальні завдання
Написати програму, яка виводить на екран внутрішнє (машинне) подання даних трьох типів. Типи даних обрати по таблиці 1.1 згідно із своїм номером у журналі групи. За результатами тестування програми зробити висновки.
Таблиця 1.1 - Індивідуальні завдання
№ |
integer |
short int |
long int |
float |
double |
long double |
[] n-вимірний |
1 |
* |
|
|
* |
|
|
1 |
2 |
* |
|
|
* |
|
|
2 |
3 |
* |
|
|
* |
|
|
3 |
4 |
|
* |
|
|
* |
|
1 |
5 |
|
* |
|
|
* |
|
2 |
6 |
|
* |
|
|
* |
|
1 |
7 |
|
|
* |
|
|
* |
2 |
8 |
|
|
* |
|
|
* |
3 |
9 |
|
|
* |
|
|
* |
1 |
10 |
* |
|
|
|
* |
|
2 |
11 |
* |
|
|
|
* |
|
3 |
12 |
* |
|
|
|
* |
|
1 |
13 |
|
* |
|
* |
|
|
2 |
14 |
|
* |
|
* |
|
|
3 |
15 |
|
* |
|
* |
|
|
1 |
16 |
|
|
* |
|
* |
|
2 |
17 |
|
|
* |
|
* |
|
3 |
18 |
|
|
* |
|
* |
|
1 |
19 |
* |
|
|
|
|
* |
2 |
20 |
* |
|
|
|
|
* |
3 |
21 |
* |
|
|
|
|
* |
1 |
22 |
|
* |
|
|
|
* |
2 |
23 |
|
* |
|
|
|
* |
3 |
24 |
|
* |
|
|
|
* |
1 |
Примітка: в таблиці подано типи даних мовою С/C++.
Контрольні питання
1. У вигляді яких складових подаються у пам’яті дані цілих типів?
2. У якому коді подаються у пам’яті цілі дані?
3. Скільки пам’яті виділяється для даних типу коротке ціле, ціле, довге ціле?
4. У вигляді яких складових подаються у пам’яті дані дійсних типів?
5. У якому коді подаються у пам’яті дані дійсних типів?
6. Як будуть представлені в пам’яті числа 255 та -255 в форматі короткого цілого?
7. Як буде представлені в пам’яті числа -2 та 2 в форматі короткого дійсного?
8. Чим визначається похибка подання дійсних чисел?
9. Що таке «прихована одиниця»? Навіщо вона потрібна?
10. З якою точністю видаються дійсні числа?