close

Вход

Забыли?

вход по аккаунту

?

lab

код для вставкиСкачать
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
"Санкт-Петербургский государственный университет информационных технологий,
механики и оптики"
Институт комплексного военного образования
Кафедра мониторинга и прогнозирования информационных угроз
<название дисциплины>
Лабораторная работа № 1
Тема: Выражения, операторы, и простые типы
Вариант № 9
Студент:Нех В.П
Группа: 1751
Преподаватель: Гирик А.В
Санкт-Петербург
2013
Задание
Написать программу, которая получает случайное целое типа int, выводит его двоичное представление на экран, выполняет преобразование в соответствии с вариантом (см. ниже), затем выводит на экран двоичное представление результата преобразования.
Условие:
Назовем сверткой байта порядка N операцию циклического сдвига старшей тетрады на N битов вправо, а младшей тетрады на N битов влево. Выполнить свертку всех байтов на случайное число из диапазона 0..3
Пример:
0xDEADBEEF --> 0x7BA7EBBF , при (N = 2)
Текст программы
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <conio.h>
int main()
{
srand(time(NULL)); // Устанавливаем исходное число для последовательности, генерируемой функцией rand()
int num = -2999 + rand() % 6000, // Присваиваем случайное значение в диапазоне (-3000..3000)
N = 2; // rand() % 4 // Для "свёртки из диапазона (0..3)
char s[70]; unsigned char h_tetr = 0,l_tetr = 0,t = 0,*enm = 0;
std::cout << "num: " << num << "\n"; // Выводим случайное исходное число
itoa(num, s, 2); // Преобразование по основанию 2, в строку s
std::cout << s << "\n"; enm = (unsigned char *) &num;
for(int i = 0; i < sizeof(int); i++) {
h_tetr = enm[i] & 0xf0; // Старшая тетрада
l_tetr = enm[i] & 0x0f; // Младшая тетрада
t = h_tetr >> N; h_tetr = (((t & 0x0f) << 4) | (t & 0xf0));
t = l_tetr << N;
l_tetr = ((t & 0x0f) | ((t & 0xf0) >> 4));
enm[i] = h_tetr | l_tetr;
}
itoa(num, s, 2); std::cout << s << "\n"; // Вывод результата
getch(); // Считывание символа, необходимо для "остановки" программы
return 0;
}
Результаты работы программы при разных входных значениях
Документ
Категория
Рефераты
Просмотров
13
Размер файла
96 Кб
Теги
lab
1/--страниц
Пожаловаться на содержимое документа