Читаем C++: базовый курс полностью

int main()

{

 swap_bytes sb;

 char temp;

 sb.num = 15; // двоичный код: 0000 0000 0000 1111

 cout << "Исходные байты: ";

 disp_binary(sb.ch[1]);

 cout << " ";

 disp_binary(sb.ch[0]);

 cout << "\n\n";

 // Обмен байтов.

 temp = sb.ch[0];

 sb.ch[0] = sb.ch[1];

 sb.ch[1] = temp;

 cout << "Байты после перестановки: ";

 disp_binary(sb.ch[1]);

 cout << " ";

 disp_binary(sb.ch[0]);

 cout << "\n\n";

 return 0;

}

// Отображение битов, составляющих байт.

void disp_binary(unsigned u)

{

 register int t;

 for(t=128; t>0; t=t/2)

  if(u & t) cout << "1 ";

  else cout << "0 ";

}

При выполнении программа генерирует такие результаты.

Исходные байты: 0000 0000 0000 1111

Байты после перестановки: 0000 1111 0000 0000

В этой программе целочисленной переменной sb.num присваивается число 15. Перестановка двух байтов, составляющих это значение, выполняется путем обмена двух символов, которые образуют массив ch. В результате старший и младший байты целочисленной переменной num меняются местами. Эта операция возможна лишь потому, что как переменная num, так и массив ch разделяют одну и ту же область памяти.

В следующей программе демонстрируется еще один пример использования объединения. Здесь объединения связываются с битовыми полями, используемыми для отображения в двоичной системе счисления ASCII-кода, генерируемого при нажатии любой клавиши. Эта программа также демонстрирует альтернативный способ отображения отдельных битов, составляющих байт. Объединение позволяет присвоить значение нажатой клавиши символьной переменной, а битовые поля используются для отображения отдельных битов.

// Отображение ASCII-кода символов в двоичной системе счисления.

#include

#include

using namespace std;

// Битовые поля, которые будут расшифрованы.

struct byte {

 unsigned a : 1;

 unsigned b : 1;

 unsigned с : 1;

 unsigned d : 1;

 unsigned e : 1;

 unsigned f : 1;

 unsigned g : 1;

 unsigned h : 1;

};

union bits {

 char ch;

 struct byte bit;

}ascii;

void disp_bits(bits b);

int main()

{

 do {

  cin >> ascii.ch;

  cout << ":";

  disp_bits(ascii);

 }while(ascii.ch!='q'); // Выход при вводе буквы "q".

 return 0;

}

// Отображение конфигурации битов для каждого символа.

void disp_bits(bits b)

{

 if(b.bit.h) cout << "1";

  else cout << "0";

 if(b.bit.g) cout << "1";

  else cout << "0";

 if(b.bit.f) cout << "1";

  else cout << "0 ";

 if(b.bit.e) cout << "1";

  else cout << "0";

 if(b.bit.d) cout << "1";

  else cout << "0";

 if(b.bit.c) cout << "1";

  else cout << "0";

 if(b.bit.b) cout << "1";

  else cout << "0";

 if(b.bit.a) cout << "1";

  else cout << "0";

 cout << "\n";

}

Вот как выглядит один из возможных вариантов выполнения этой программы.

а: 0 1 1 0 0 0 0 1

b: 0 1 1 0 0 0 1 0

с: 0 1 1 0 0 0 1 1

d: 0 1 1 0 0 1 0 0

е: 0 1 1 0 0 1 0 1

f: 0 1 1 0 0 1 1 0

g: 0 1 1 0 0 1 1 1

h: 0 1 1 0 1 0 0 0

i: 0 1 1 0 1 0 0 1

j: 0 1 1 0 1 0 1 0

k: 0 1 1 0 1 0 1 1

1: 0 1 1 0 1 1 0 0

m: 0 1 1 0 1 1 0 1

n: 0 1 1 0 1 1 1 0

o: 0 1 1 0 1 1 1 1

p: 0 1 1 1 0 0 0 0

q: 0 1 1 1 0 0 0 1

Перейти на страницу:

Все книги серии Изучайте C++ с профессионалами

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных