Поразрядные (побитовые) операции — КиберПедия 

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Поразрядные (побитовые) операции

2017-06-19 266
Поразрядные (побитовые) операции 0.00 из 5.00 0 оценок
Заказать работу

Их можно производить с любыми целыми числами, переменными и константами. Их нельзя использовать с переменными типа float, double, long double.Поразрядными операциями являются:

& AND (и),

| OR (или),

^ XOR,

~ NOT (не),

<< сдвиг влево,

>> сдвиг вправо.

Операции AND, OR, NOT, XOR полностью соответствуют аналогичным логическим операциям. Поразрядные операции позволяют, в частности, обеспечить доступ к любому биту информации. Часто эти операции используют в драйверах устройств, программах, связанных с принтером, модемом и другими устройствами.

При выполнении поразрядной операции над двумя переменными, например типа char, операция производится над каждой парой соответствующих разрядов. Отличие поразрядных операций от логических и операций отношения состоит в том, что логическая операция и операция отношения всегда дают в результате 0 или 1. Для поразрядных операций это не так.

Приведем следующий пример:

Если надо установить значение старшего разряда переменной типа char равным нулю, то удобно применить операцию &(and).

ch = ch & 127;

Пусть ch = ’A’

‘A’ в двоичном коде: 11000001;

127 в двоичном коде: 01111111

‘A’ & 127: 01000001.

Если мы хотим установить для старшего разряда 1, удобна операция OR (или)

ch = ch | 128

‘A’ 11000001

127 10000000

‘A’ | 128 11000001.

Поразрядные операции удобны для хранения в сжатом виде информации о состоянии on/off (вкл/выкл). В одном байте можно хранить 8 таких флагов.

Операция сдвига. Форма представления:

value >> число позиций; value<< число позиций.

Пример. Двоичное представление числа х = 9: 00001001.

Тогда x = 9<<3: 01001000,

x = 9>>3: 00000001.

Пример. Пусть unsigned char x = 255 в двоичном виде 11111111.

Значения выражения сдвига будут иметь вид:

Х = х<<3: 11111000

Х = х>>3: 00011111

X = x>>5: 00000111.

 

 

Управляющие конструкции языка Си

Организация ветвящихся процессов: оператор if

 

Программа - это описание средствами языка программирования алгоритма решения задачи. Любой алгоритм можно разделить на следования, ветвления и циклы. В простейшем случае имеют место только следования.

Если имеет место проверка условий и выбор одного из возможных направлений продолжения вычислений, то имеет место ветвление (Рис.2.1).

       
   
 
 

 


Да Нет

       
   

 


Рис.3.1

Ветвления в программах осуществляются с помощью оператора условия if. Этот оператор используется в двух формах:

а) в полной форме:

if (выражение) (if - если, else - иначе)

оператор_1;

Else

оператор_2;

Правило выполнения: если выражение в скобках (здесь некоторое условие) не равно нулю, т.е. “истина”, то выполняется оператор_1. В противном случае выполняется оператор_2.

б) в сокращенной форме:

if (выражение)

оператор_1;

Если выражение в скобках (…) не равно нулю, то выполняется оператор_1, в противном случае управление передается следующему оператору программы.

Операторы_1 и _2 могут быть как простыми, так и составными. В последнем случае группа операторов должна заключаться в фигурные скобки:

{

оператор_1;

оператор_2;

…………

оператор_n;

}.

Каждый оператор внутри скобок должен заканчиваться “;”.

Пример 3.1:

# include <conio.h>

void main (void)

{

clrscr ();

float a, b, rez;

printf (“Введите значение а и b: “);

scanf (“%f %f “, &a, &b);

if (b= =0)

printf (“Отношение a / b не определено \n “);

Else

{

rez = a / b;

printf (“Отношение a / b равно %6, 3f\n”, rez);

}

getch();

}

Еще один фрагмент:

.........

if ((ch = getch())= =’g’)

puts (“Конец работы \n”);

Else

puts (“Работа продолжается \n”);

Выражение после слова if может состоять из нескольких операций присваивания, разделяемых запятыми. Значение всего выражения будет определяться последним присваиванием. Это справедливо для любого составного выражения. Например:

 

if (с=сh,ch=getch()).

 


Поделиться с друзьями:

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

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.