Операции поразрядной арифметики. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операции поразрядной арифметики.



Применяются только для целочисленных операндов. Существуют следующие бинарные операции:

& - поразрядное И;

|   - поразрядное ИЛИ;

^ - исключающее ИЛИ;

<< - сдвиг влево;

>> - сдвиг вправо;

~ - операция обращения (инверсия) - унарная операция

Поразрядная конъюнкция (И) битовых значений операндов, обеспечивает выключение битов flag=x&mask;    x= 01011

                                                     mask= 01100

                                                       flag= 01000

Поразрядная дизъюнкция (ИЛИ) битовых значений операндов, обеспечивает включение битов flag=x|mask;         x= 01011

                                                     mask= 01101

                                                       flag= 01111

Поразрядное исключающее ИЛИ (сумма по модулю 2). Значение выражения содержит 1 в тех разрядах, в которых операнды имеют различные двоичные значения, и 0 во всех остальных случаях. Определение отличающихся битов.

 

Операнд 1 Операнд 2 Результат
0 0 0
0 1 1
1 0 1
1 1 0

 

diffbits=x^y;

short i=0xab00;

short j=0xabcd;

short n;

n=i^j; // n=0x00cd

Сдвиговые операции – производят сдвиг своего 1-ого операнда на количество разрядов, указанное во 2-ом операнде.

x=x>>3; //эквивалентно делению на 8

x=x<<2; //эквивалентно умножению на 4

Примечание:

1. при сдвиге влево освободившиеся разряды заполняются нулями;

2. при сдвиге вправо освобождающиеся разряды заполняются либо значениями знакового разряда (при сдвиге числа со знаком), либо нулями для чисел без знака;

3. второй операнд всегда должен быть положительным.

unsigned i, j, k;

i=0x00aa;

j=0x55aa;

k=(i<<8)+(j>>8); // k=aa55

 

Логические операции.

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

В языке С используется обычный набор операций отношений: < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), == (равно) и != (не равно).

Логическое выражение в виде отношения принимает значение 1 (истинно), если оно удовлетворяется для входящих в него операндов, и 0 (ложно) в противном случае, поэтому выражение 5>2 имеет значение 1, а 7<=00.

К логическим операциям относятся логическое И или логическое умножение (&&), логическое ИЛИ или логическое сложение (| |), исключающее ИЛИ (^)и логическое отрицание (!).

Выражения с участием логических связок будут раскрываться слева направо и как только определяется истинность или ложность всего выражения вычисления заканчиваются.

 Если операнд операции отрицания равен нулю, то результат операции будет равен единице; если же значение операнда отлично от нуля, результат операции равен нулю.

if (!good)

printf(“not good”);

 

Операция логического умножения даёт значение «истинно», если оба операнды истинны, т.е. отличны от нуля; в противном случае результат операции будет равен нулю, т.е. ложен.

if (p!=NULL && p>7) //сначала проверяется // значение b 1, значение b 2 проверяется только в том //случае, если значение b1-истинно

Логическое сложение вырабатывает значение 1 (истинно), если хотя бы один из операндов истинен (отличен от нуля) и 0 (ложно) в противном случае.

if (x<a||x>b)

printf (“out of range”);

 

Библиотечные функции.

Функция

Обозначение функции

Тип

Файл описания

функции аргумента

Абсолютное значение

abs(x) int int <stdlib.h>
fabs(x) double double <math.h>
Косинус cos(x) double double <math.h>
Синус sin(x) double double <math.h>
Округление до большего целого ceil(x) double double <math.h>
Округление до меньшего целого floor(x) double double <math.h>
Степенная функция XY pow(x) double double <math.h>
Степенная функция 10n pow10(x) double int <math.h>
Логарифм натуральный log(x) double double <math.h>
Логарифм десятичный log10(x) double double <math.h>
Корень квадратный sqrt(x) double double <math.h>
Остаток от деления Х на Y fmod(x) double double <math.h>
Генератор случайных чисел в диапазоне от 0 до 32767 rand(x) int   <stdlib.h>

Программирование разветвляющихся алгоритмов.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 70; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.35.77 (0.007 с.)