Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_и_Пр_Бизнес_лекции.doc
Скачиваний:
84
Добавлен:
10.05.2015
Размер:
1.21 Mб
Скачать

2.2.2. Операции присваивания

Язык С++ содержит несколько операций присваивания:

  • обычное присваивание =;

  • операции составного присваивания Ɵ=, где Ɵ – это один из знаков бинарных операций: +, -, *, /, %, &, |, ^, >>, <<.

Выражение с операцией составного присваивания aƟ=b эквивалентно выражению a=a Ɵ b.

Примеры операций составного присваивания:

x+=2; //сложить и присвоить, эквивалентно х=х+2

x-=y; //вычесть и присвоить, эквивалентно х=х-y

x*=10; // умножить и присвоить, эквивалентно x=x*10

Операции составного присваивания позволяют сократить запись выражений. Кроме того, операции составного присваивания выполняются быстрее, чем эквивалентные выражения с обычным присваиванием.

Операция = может многократно встречаться в выражении, например, x=y=z=3;

2.2.3. Операции отношения

Операции отношения:

  • <, > меньше и больше;

  • <=, >= меньше или равно и больше или равно;

  • ==, != равно и не равно.

Эти операции используются для задания простых условий.

Пример программы, определяющей попадает ли точка с координатами {x, y} в правую полуплоскость:

#include <iostream.h>

#include <conio.h>

void main()

{

float x, y;

cout<<”x, y? ”;

cin>>x>>y;

if (x>0)

cout<<”Yes”;

else

cout<<”No”;

getch();

}

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

Логические операции языка С++:

  • && логическое И;

  • || логическое ИЛИ;

  • ! логическое отрицание.

Они используются для формирования сложных условий путем комбинации простых условий.

Пример программы, определяющей принадлежит ли вещественное число х диапазону [a, b]:

#include <iostream.h>

#include <conio.h>

void main()

{

float x, a, b;

cout<<”a, b? ”;

cin>>a>>b;

cout<<”x? ”;

cin>>x;

if (x>=a && x<=b)

cout<<”Yes”;

else

cout<<”No”;

getch();

}

2.2.5. Поразрядные операции

В языке С++ используются следующие поразрядные операции:

  • ~ поразрядное отрицание;

  • << >> сдвиг влево и сдвиг вправо;

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

  • ^ поразрядное исключающее ИЛИ;

  • | поразрядное ИЛИ.

Они работают с двоичным представлением целых чисел и обеспечивают доступ к отдельному разряду числа. Операнды операций – целые числа или символы.

Поразрядные операции применяются для:

  • обработки массивов, каждое данное которых имеет одно из двух возможных значений;

  • быстрого умножения и деления чисел на 2n;

  • создания битовых масок.

Поразрядное отрицание изменяет значения всех разрядов двоичного представления числа на противоположные значения.

Пример:

unsigned short x, z;

x=2; //0000000000000010

z=~x;//1111111111111101

cout<<z;// 65533

Операция сдвиг влево сдвигает все разряды влево на заданное число, заполняя освободившиеся разряды значением 0.

Пример:

unsigned short x, z;

x=2; //0000000000000010

z=x<<3;//000000000010000 равносильно умножению на 23

cout<<z;//16

Операция сдвиг вправо cдвигает все разряды вправо на заданное число, заполняя освободившиеся разряды значением 0, если число беззнаковое, и значением 0 или значением знакового разряда (в зависимости от реализации С++).

Пример:

unsigned short x, z;

x=16; //0000000000010000

z=x>>3; //000000000000010 равносильно делению на 23

cout<<z; //2

Операция поразрядное И формирует результат, каждый разряд которого равен 1 только тогда, когда соответствующие разряды операндов равны 1.

Пример:

unsigned short x, y, z;

x=2; //0000000000000010

y=3; //0000000000000011

z=x&y;//000000000000010

cout<<z; //2

Операция поразрядное исключающее ИЛИ формирует результат, каждый разряд которого равен 1 только тогда, когда соответствующие разряды операндов различны.

Пример:

unsigned short x, y, z;

x=2; //0000000000000010

y=3; //0000000000000011

z= x^y; //0000000000000001

cout<<z; //1

Операция поразрядное ИЛИ формирует результат, каждый разряд которого равен 1 тогда, когда хотя бы у одного из операндов соответствующий разряд 1.

Пример:

unsigned short x, y, z;

x=2; //0000000000000010

y=3; //0000000000000011

z= x|y; //0000000000000011

cout<<z; //3

Пример программы получения значение i-разряда целого числа (разряды нумеруются справа налево и нумерация начинается с 0):

#include <iostream.h>

#include <conio.h>

void main()

{

int i; //номер разряда

int x, y; //вводимое число и значение i-разряда

cout<<”x? “; cin>>x;

cout<<”i? “; cin>>i;

y=x>>i & 1;

cout<<”y=”<<y;

getch();

}

Тест:

х=5 (0000000000000101), i=2 у: 1