Программный код решения примера:

#include <stdio. h>

#include <conio. h>

#define MAX 20

// Шаблон структуры

struct test {

char A[MAX+1]; double ax;

char B[MAX+1]; double by;

};

//Прототип вспомогательной функции

double sum(double, double);

// Главная функция

int main (void)

{

struct test AB; // создание новой структурной переменной

//Заполнение полей структуры

printf("\n\t Type 1 st name: ");

gets_s(AB. A, MAX);

printf("\t Enter the first real number: ");

scanf_s("%lf", &AB. ax);

_flushall();

printf("\n\t Enter 2 nd name: ");

gets_s(AB. B, MAX);

printf("\t Enter the second real number: ");

scanf_s("%lf", &);

printf("\n\t The sum of two numbers \

%1.2f and %1.2f, %s and %s: %1.2f\n",

AB. ax, , AB. A, AB. B, sum(AB. ax, ));

printf("\n Press any key: ");

_getch();

return 0;

}

// Функция суммирования двух чисел

double sum(double x, double y) {

return (x + y);

}

Возможный результат выполнения программы показан на рис. 12.1.


Рис. 12.1. Сумма двух чисел, переданных в качестве аргументов функции

13. Операции с разрядами (битами) в языке С

13.1. Базовые системы счисления

В языке программирования С предусмотрено управление отдельными разрядами (битами) значения переменной. Эта возможность связывается с представлением числа в компьютере, а именно с различными системами счисления: двоичной, восьмеричной, шестнадцатеричной.

У бита возможны только два значения: 0 и 1. Техническую реализацию таких состояний легко представить, например включено – выключено, положительное значение напряжения – отрицательное значение напряжения (определенного уровня) и т. д.

НЕ нашли? Не то? Что вы ищете?

В языке программирования С термин байт используется для обозначения размера (разрядности) хранения набора символов. Поэтому в языке С байт может содержать 8, 9, 16 и другое количество разрядов. Однако в характеристиках модулей памяти и систем передачи данных предполагается, что байт содержит восемь разрядов. Разряды байта пронумерованы справа налево числами от 0 до 7. Седьмой разряд (крайний левый) называется старшим, а нулевой (крайний правый) – младшим.

Байт имеет наибольшее значение, когда все его разряды установлены, т. е. имеют значение 1. Например, для 8 разрядов с учетом двоичной системы счисления в случае возможного наибольшего значения получим:

128

64

32

16

8

4

2

1

=

255

27

26

25

24

23

22

21

20

Наименьшему значению соответствует комбинация нулей 00000000, которая представляет собой просто нуль.

Байт может хранить числа от 0 до 255, что составляет 256 возможных значений. Программа может интерпретировать комбинацию разрядов иначе и применять байт для хранения чисел от –128 до 127, (также 256 значений). Например, тип unsigned char обычно характеризуется использованием байта для представления чисел в диапазоне от 0 до 255, тип signed char – до 127.

В основании восьмеричной системы счисления лежит число 8 (23). Каждое знакоместо восьмеричного числа соответствует определенной степени восьми. Для записи используются цифры от 0 до 7. Каждая цифра восьмеричного числа соответствует трем двоичным цифрам. Двоичные эквиваленты таких цифр представлены в табл. 13.1.

Таблица 13.1

Двоичные эквиваленты восьмеричных цифр

Восьмеричная цифра

Двоичный эквивалент

0

1

2

3

4

5

6

7

000

001

010

011

100

101

110

111

В шестнадцатеричной системе счисления используются степени числа 16 и цифры от 0 до 15. Для представления цифр, соответствующих десятичным значениям от 10 до 15, применяются буквы от A до F [1]. Например, в шестнадцатеричном числе A3F (в языке С записывается как 0xA3F) заложено следующее значение:

10 × 162 + 3 × 161 + 15 × 160 = 2 623 (по основанию 10).

В приведенной записи числу 10 соответствует А, а числу 15 – F.

Язык С допускает использование букв нижнего и верхнего регистра (строчных и прописных) для обозначения шестнадцатеричных цифр. Таким образом, число 2 623 в указанной системе счисления можно записать как 0xA3F, так и 0xa3f. Каждая цифра шестнадцатеричного числа соответствует 4-значному двоичному числу, следовательно, две шестнадцатеричные цифры – одному восьмиразрядному байту. Первая цифра представляет 4 старших разряда, а вторая – 4 младших.

Соответствие между шестнадцатеричными цифрами, десятичными и двоичными числами показано в табл. 13.2.

Таблица 13.2

Эквиваленты шестнадцатеричных чисел

Десятичное число

Шестнадцатеричная цифра

Двоичный эквивалент

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

1

2

3

4

5

6

7

7

9

A

B

C

D

E

F

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

В языке С существуют два средства управления разрядами. Первое представляет собой набор поразрядных операций, а второе – форму полей данных, которая гарантирует доступ к разрядам значения типа int.

Далее будут использоваться 8-разрядные числа в двоичной системе счисления.

13.2. Логические поразрядные операции

В языке программирования С существуют два вида поразрядных операций: логические и операции сдвига. Поразрядные операции выполняются над каждым разрядом независимо от того, находится он слева или справа, а также над целыми числами. Рассмотрим логические поразрядные операции.

Поразрядное отрицание обозначается символом тильда (~). Унарная операция ~ преобразовывает все единицы в нули и все нули в единицы (предполагается, что операции производятся над двоичными числами). Ее называют также операцией «дополнение», т. е. все биты, равные 0, переводятся в 1, а равные 1 – в 0.

Поразрядная операция И обозначается символом &. Двоичная операция & создает новое значение за счет выполнения поразрядного сравнения двух операндов. Для каждой позиции результирующий разряд будет иметь значение 1 только в случае, когда соответствующие разряды обоих операндов имеют значение 1. Можно сказать, что когда над двумя значениями производится операция поразрядного умножения &, то двоичные представления чисел сравниваются бит за битом. Например, пусть одна переменная w1 есть число 25, а другая w2 – число 77. Соответственно в двоичном представлении 25 = = 0000000000011001, 77 = 0000000001001101. Тогда в результате поразрядной операции & получим число w3 = w1 & w2. Результат действия оператора & можно представить следующим образом:

Поразрядная операция И (&)

w1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 (25)

w2 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 (77)

w3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 (9)

В результате поразрядной операции & над двумя числами (25 и 77 в двоичном представлении), которые имеют, например, 16 бит, получили новое число 9.

Поразрядный оператор & часто используется для операций маскирования. С его помощью принудительно можно установить определенный бит данных в значение 0. Например, в утверждении

w3 = w1 & 3;

переменной w3 присваивается значение переменной w1, для которой выполнена поразрядная операция & со значением 3. При этом все биты левее двух младших битов устанавливаются в 0, а остальные сохраняют свое значение. Маска представляет собой некоторую комбинацию разрядов. Разряды маски с нулевыми значениями можно считать аналогом непрозрачных ячеек реальной маски, а разряды со значениями 1 – прозрачными ячейками.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством