УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ВТ и ЗИ
Лабораторная работа №1
по дисциплине «Средства вычислительной техники»
«ИЗУЧЕНИЕ СПОСОБОВ ПРЕДСТАВЛЕНИЯ ДАННЫХ В ЭВМ»
Выполнили студенты группы БПС-203:
Ганцев Сергей
Захаров Дмитрий
Проверил к.т.н., старший преподаватель
Вульфин Алексей Михайлович
УФА-2013
Цель:
изучение способов представления числовых, текстовых данных, основных
арифметических и логических операций над ними.
Задачи:
- исследование представления в ЭВМ целых чисел;
- исследование представления в ЭВМ вещественных чисел с плавающей
запятой;
- анализ стандарта IEEE 754 для организации хранения вещественных чисел
с плавающей запятой;
- исследование особенностей операций над числами с плавающей запятой;
- анализ представления текстовых данных
Задание №2
Код программы
{
ByteOrder num;
num.integerValue = 1; //1 = 0x0001 = 00000000 00000001
printf("Unsigned short value = 0x%04x\n", num.integerValue);
printf("bytes[0] = 0x%02x\n", num.bytesArray[0]);
printf("bytes[1] = 0x%02x\n", num.bytesArray[1]);
if (num.bytesArray[0] == 1) {
printf("little-endian bytes order\n");
}
else {
printf("big-endian bytes order\n");
}
}
Результат работы программы
Example 1: Check bytes order
Unsigned short value = 0x0001
bytes[0] = 0x01
bytes[1] = 0x00
little-endian bytes order
Задание №3
Код программы
void printByteOrder(int numExample)
{int a = 21;
int b = 49;
int c = a - b;
printf("Convert num to binary with getBits() function\n");
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
printf("============================\n");
printf("Example %d: Check bytes order\n", numExample);
checkByteOrder();
}
Результат работы программы
Задание №4
Код программы
void convertIntNumbers(int numExample)
{int a = 27;
int b = 49;
int c = a - b;
char buffer[65]; // Буфер для хранения строкового представления числа
int r = 2; // Основание новой системы счисления
_itoa(c, buffer, r);
printf("Base %d: c_%d = %s (%d chars)\n", r, r, buffer, 65);
printf("Convert num to binary with getBits() function\n");
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
printf("============================\n");
c ^= (1 << 2); // Инвертирование 2-го бита результата
// Повторный вывод числа с
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
Результат работы программы
Base 2: c_2 = 11111111111111111111111111101010 (65 chars)
Convert num to binary with getBits() function
11111111111111111111111111101010============================
11111111111111111111111111101110============================
Задание №5
Код программы
void convertIntNumbers(int numExample)
{int a = 54;
int b = 7;
int c = a - b;
char buffer[65]; // Буфер для хранения строкового представления числа
int r = 2; // Основание новой системы счисления
_itoa(c, buffer, r);
printf("Base %d: c_%d = %s (%d chars)\n", r, r, buffer, 65);
printf("Convert num to binary with getBits() function\n");
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
printf("============================\n");
r = 3; // Основание новой системы счисления
_itoa(c, buffer, r);
printf("Base %d: c_%d = %s (%d chars)\n", r, r, buffer, 65);
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
printf("============================\n");
r = 8; // Основание новой системы счисления
_itoa(c, buffer, r);
printf("Base %d: c_%d = %s (%d chars)\n", r, r, buffer, 65);
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
printf("============================\n");
r = 16; // Основание новой системы счисления
_itoa(c, buffer, r);
printf("Base %d: c_%d = %s (%d chars)\n", r, r, buffer, 65);;
for (int i = 31; i > -1; i--) {
printf("%u", getBits(c, i));
}
Результат работы:
Base2:c_2 = 101111 (65chars)
Convert num to binary with getBits() function
00000000000000000000000000101111============================
Base 3: c_3 = 1202 (65 chars)
00000000000000000000000000101111============================
Base 8: c_8 = 57 (65 chars)
00000000000000000000000000101111============================
Base 16: c_16 = 2f (65 chars)
00000000000000000000000000101111============================