Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Вывод значений битовых полей ⇐ ПредыдущаяСтр 8 из 8
Объяснить результат!!! если дана структура с битовыми полями EXAMPLE: struct EXAMPLE { int i:2; unsigned j:2; int:2; int k: 2; };
int main() { EXAMPLE my_struct; my_struct.i=3; my_struct.j=3; my_struct.k=-1; cout << dec << my_struct. i <<" " << my_struct. j <<" "<<my_struct. k << endl;
my_struct.i = 2; my_struct.j = 2; my_struct.k = 1; cout << dec << my_struct. i << " "<< my_struct. j << " " <<my_struct. k << endl; _getch(); return 0; } Формирование кода символа с помощью битовых полей объединения
Формирование кода символа ‘D’ (6810=4416). Вариант 1: union {char simb; struct {int x:5; int y:3; } hh; }cod;
int main() { cod.hh.x=4; cod.hh.y=2; cout<<cod.simb; // D (код 44)
_getch(); return 0; } 7 0
hh.x (5 битов) hh.y (3 бита)
Формирование кода символа ‘D’ (6810=4416). Вариант 2. Используется функция, которая упаковывает в байт остатки от деления на 16 двух чисел int main() { int a=36, b=20; //два числа для формирования кода символа ‘D’ cout << cod(a, b) << endl; _getch(); return 0; }
unsigned char cod (int a, int b) { union { unsigned char z; struct {unsigned int x:4; unsigned int y:4; } hh; } un; un.hh.x=a%16; //остаток равен 4 un.hh.y=b%16; //остаток равен 4 return un.z; //возвращает символ с кодом 44 } Формирование байта и вывод на экран его двоичного представления (функция cod() упаковывает в байт два числа функция binary() выводит на экран двоичное представление байта-параметра): unsigned char cod (int a, int b); void binary (unsigned char ch); int main() { int k, m, n; cout << "m=? n=?: "; cin >> m >> n; k = cod (m, n); //упаковка значений в байт cout << "cod= " << hex <<k <<endl; //вывод кода cout << "simvol= " << char(k) << endl; //вывод символа cout << dec << endl; binary(k); //вывод на экран двоичного представления байта _getch(); return 0; } unsigned char cod (int a, int b) { union { unsigned char z; struct {unsigned int x:4; unsigned int y:4;
} hh; } un; un.hh.x=a%16; //получение остатков от чисел-аргументов un.hh.y=b%16; return un.z; //возвращает символ с полученным кодом 44 } void binary (unsigned char ch) //вывод на экран двоичного представления байта { union { //определение локального объединяющего типа unsigned char ss; struct { unsigned a0:1; //каждый бит получает название unsigned a1:1; unsigned a2:1; unsigned a3:1; unsigned a4:1; unsigned a5:1; unsigned a6:1; unsigned a7:1; } byte; } cod; //определение локальный переменной-объединения
cod.ss=ch; //занесение в объединение значения аргумента функции cout << "nomera bitov: 7 6 5 4 3 2 1 0\n"; cout <<"znachenie: "; cout << " " << cod.byte.a7 << " " << cod.byte.a6; //так как все биты cout << " " << cod.byte.a5 << " " << cod.byte.a4; //имеют названия cout << " " << cod.byte.a3 << " " << cod.byte.a2; cout << " " << cod.byte.a1 << " " << cod.byte.a0; cout <<endl; }
А вот теперь: [1] * На оценку выше 5
|
|||||||||||||||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 50; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.105.124 (0.008 с.) |