Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт до лабораторної роботи №1
“Внутрішнє представлення цілих та дійсних чисел в пам’яті комп ”
Варіант№15
Виконав:
ст.гр. КІ-1
Львів 2007
Мета Роботи: Дослідити внутрішнє представлення цілих та дійсних чисел в пам’яті комп’ютера.
2. Постановка задачі
Дослідити внутрішнє представлення змінної типу int для чисел 1515 та -1515 і змінної типу float для чисел 15,15 та -15,15.
Опис алгоритму
Створюємо вказівнк типу 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:1515 2
14 757 2
11 6 378 2
10 15 2 189 2
15 14 17 18 94 2
14 17 16 9 8 47 2
15 16 18 8 14 4 23 2
14 1 18 1 14 7 2 11 2
1 0 0 6 3 10 5 2
1 2 1 4 2 2
1 1 2 1
0
101 1110 1011
0000 0000 0000 0000 0000 0101 1110 1011
ВПК: 1110 1011 0000 0101 0000 0000 0000 0000
E B 0 5 0 0 0 0
Int 151510=EB 05 00 0016
Від’ємні знаходяться в доповняльному коді.
0000 0000 0000 0000 0000 0101 1110 1011 – Прямий код
1111 1111 1111 1111 1111 1010 0001 0100 – Обернений код
1111 1111 1111 1111 1111 1010 0001 0100
+ 1
1111 1111 1111 1111 1111 1010 0001 0101 - Доповняльний код
ВПК: 0001 0101 1111 1010 1111 1111 1111 1111
1 5 F A F F F F
Int -151510=15 FA FF FF16
float: 15 2
14 7 2
1 6 3 2
1 2 1
1
1510=F16=11112
x0,15 x0,4
16 16 - Повтор.
2,4 6,4
0,1510 = 2616 = 0010 01102
15,1510 = F,2616 = 1111,0010 01102
1111, 0010 0110 0000 0000 0000 0000 0000
1,111 0010 0110 0000 0000 0000 0000 0000
e=12710+310=13010=8216=1000 00102
sem
s=0 – число додатнє.
e=1000 00102
m=111 0010 0110 0000 0000 00002
0100 0001 0111 0010 0110 0000 0000 0000
ВПК: 0000 0000 0110 0000 0111 0010 0100 0001
F F 6 0 7 2 4 1
Float 15,1510=0000 0000 0110 0000 1111 0110 0100 00002= FF 60 72 4116
s=1 - число від’мне.
e=1000 00102
m=111 0010 0110 0000 0000 00002
1100 0001 0111 0010 0110 0000 0000 0000
ВПК: 0000 0000 0110 0000 0111 0010 1100 0001
F F 6 0 7 2 C 1
Float -15,1510=0000 0000 0110 0000 0111 0010 1100 00012= FF 60 72 C116
Результати виконання програм
int: Input first number by int
1515
EB 05 00 00
Input second number by int
-1515
15 FA FF FF
Input first number by float
15,15
FF 60 72 41
Input second number by float
-15,15
FF 60 72 C1
Висновок: На данній лабораторній робіті було досліджено внутрішнє представлення змінної типу int для чисел 1515 та -1515 і змінної типу float для чисел 15,15 та -15,15.