Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Вывод значений битовых полейСодержание книги
Поиск на нашем сайте Объяснить результат!!! если дана структура с битовыми полями 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;
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; просмотров: 110; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.007 с.) |