Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт до лабораторної роботи №1
“Внутрішнє представлення цілих та дійсних чисел в пам’яті комп ”
Варіант№4
Виконав: ст.гр. КІ-1
Львів 2007
Зміст
Мета роботи;
Постановка задачі;
Опис алгоритму;
Текст програми ;
Результати тестування;
Ручний розрахунок;
Результати виконання програм;
Мета Роботи: Дослідити внутрішнє представлення цілих та дійсних чисел в пам’яті комп’ютера.
2. Постановка задачі
Дослідити внутрішнє представлення змінної типу int для чисел 44 та -4,4 і змінної типу float для чисел 4,4 та -4,4.
Опис алгоритму
Створюємо вказівнк типу unsigned char на адреси змінних типу int та float. Далі в циклі, від 0 до об’єму, який займає змінна в пам’яті (кількості байтів ( комірок, які займає код числа)), виводимо на екран код числа, який представляємо в виді шістнадцяткового коду, побайтово, тобто кожен байт відповідає тетраді двійкового коду числа. Наведений алгоритм використовуємо для змінних типу int та float без змін.
Текст програми
main.c
#include <stdio.h>
#include <conio.h>
int main (void)
{
int ifirst, isecond;
float ffirst, fsecond;
int i;
unsigned char* pf=(unsigned char *)(&ifirst);
unsigned char* ph=(unsigned char *)(&isecond);
printf("Input first number by int:\n");
scanf("%d", &ifirst);
for(i=0; i<sizeof(ifirst); i++)
printf("%X", pf[i]);
printf("\n");
printf("Input second number by int:\n");
scanf("%d", &isecond);
for(i=0; i<sizeof(isecond); i++)
printf("%X ", ph[i]);
printf("\n");
/*-----------------------------------*/
printf("Input first number by float:\n");
scanf("%f", &ffirst);
for(i=0; i<sizeof(ffirst); i++)
printf("%X", pf[i]);
printf("\n");
printf("Input second number by float:\n");
scanf("%f", &fsecond);
for(i=0; i<sizeof(fsecond); i++)
printf("%X ", ph[i]);
printf("\n");
getch();
return 0;
}
Результати тестування
Ручний розрахунок
Int:44 2
44 22 2
0 2211 2
0 10 5 2
1 4 2 2
1 2 1
0
101100
00000000 00000000 00000000 00101100
ВПК: 00101100 00000000 00000000 00000000
2C 00 00 00
Int 4410=2C 00 00 0016
Від’ємні знаходяться в доповняльному коді.
00000000 00000000 00000000 00101100 – Прямий код
11111111 11111111 11111111 11010011 – Обернений код
11111111 11111111 11111111 11010011
+ 1
11111111 11111111 11111111 11010100 - Доповняльний код
ВПК: 10110011 11111111 11111111 11010100
D4 FF FF FF
Int -4410=D4 FF FF FF16
float: 4 2
4 2 2
0 2 1
0
410=416=01002
x0,4 - Повтор.
16
6,4
0,410 =01102
4,410 = 0100,01102
0100,0110 00000000 00000000 00000000
01,000110 00000000 00000000 00000000
e=12710+210=12910=8116=1000 00012
sem
s=0 – число додатнє.
e=1000 00012
m=000110 00000000 00000000 02
01000000 10001100 00000000 00000000
ВПК: 00000000 00000000 10001100 01000000
FF FF 8C 40
Float 4,410=00000000 00000000 10001100 010000002= FF FF 8C 4016
s=1 - число від’мне.
e=1000 00012
m=000110 00000000 00000000 02
11000000 10001100 00000000 00000000
ВПК: 00000000 00000000 10001100 11000000
FF FF 8C C0
Float 4,410=00000000 00000000 10001100 110000002= FF FF 8C C016
Результати виконання програм
int: Input first number by int
44
2C 00 00 00
Input second number by int
-44
D4 FF FF FF
Input first number by float
4,4
FF FF 8C 40
Input second number by float
-4,4
FF FF 8C C0
Висновок: На данній лабораторній робіті було досліджено внутрішнє представлення змінної типу int для чисел 44 та -44 і змінної типу float для чисел 4,4 та -4,4.