Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Доступ к отдельному биту



Одним из методов, позволяющих доступ к биту - это использование полей битов. Поля битов – это специальный тип членов структуры, в котором определено из скольких бит состоит каждый элемент. Основная форма объявления такой конструкции следующая:

struct имя_стуктуры

{

тип имя1: длина в битах

тип имя2: длина в битах

….

тип имяn: длина в битах

};

При этом тип может быть только целым (int).


Лекция 5.

Пример, иллюстрирующий доступ к каждому биту числа:

#include<iostream.h>

void bin(unsigned char ch)

{

/* union объединение – специальная структура, которая хранит элементы в разделяемом адресном пространстве. Размером объединения является размер его наибольшего элемента. Доступ к элементам осуществляется через точку.*/

union

{

unsigned char cc;

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.cc=ch;

// вывод значения каждого бита числа

cout<<"\nномера битов \t7 6 5 4 3 2 1 0";

cout<<"\nзначения битов\t";

cout<<cod.byte.a7<<" "; cout<<cod.byte.a6<<" ";

cout<<cod.byte.a5<<" "; cout<<cod.byte.a4<<" ";

cout<<cod.byte.a3<<" "; cout<<cod.byte.a2<<" ";

cout<<cod.byte.a1<<" "; cout<<cod.byte.a0<<"\n";

}

main()

{

unsigned int k, m,n;

cout<<"\n m=";cin>>m;

cout<<"\n k=";cin>>k;

n=m+k;

bin(m);// вывод кода переменной m

bin(k);

bin(n);

}

Пример вывода программы может быть таким:

m=3

k=4

номера битов 7 6 5 4 3 2 1 0

значения битов 0 0 0 0 0 0 1 1

номера битов 7 6 5 4 3 2 1 0

значения битов 0 0 0 0 0 1 0 0

номера битов 7 6 5 4 3 2 1 0

значения битов 0 0 0 0 0 1 1 1

Задание для самоконтроля:

Определить, что выведется на экран в результате выполнения программы:

#include <iostream.h>

main()

{

int i,j,k;

char ii,kk;

ii=i=4;

j=7;

k=j&i;

cout<<"\n";

cout<<j<<" и "<<i<<"= "<<k;

k=j|i;

cout<<"\n";

cout<<j<<" или "<<i<<"= "<<k;

k=j^i;

cout<<"\n";

cout<<j<<" исключающее или "<<i<<"= "<<k;

k=i<<2;

cout<<"\n";

cout<<int(i)<<" сдвиг влево на 2 = "<<int(k);

k=j>>2;

cout<<"\n"<<j<<" сдвиг вправо на 2 = "<<k;

kk=ii<<5;

cout<<"\n"<<int(ii)<<" сдвиг влево на 5 = "<<int(kk);

kk=ii<<6;

cout<<"\n"<<int(ii)<<" сдвиг влево на 6 = "<<int(kk);

}





Дата публикования: 2014-12-08; Прочитано: 375 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...