Чтение онлайн

на главную - закладки

Жанры

Программирование на С, С++
Шрифт:

Поразрядное включающее ИЛИ

Пример:

8 | 10 = 10

8 – это 1000 в двоичной системе счисления, 10 – это 1010 в двоичной системе счисления. С каждым битом числа выполняется операции логическое ИЛИ, и вместо этого бита ставится результат этой операции, смотри Рисунок 4.

Рисунок 4

Поразрядное И

Пример:

8 & 10 = 8

8 –

это 1000 в двоичной системе счисления, 10 – это 1010 в двоичной системе счисления. С каждым битом числа выполняется операции логическое И, и вместо этого бита ставится результат этой операции.

Пример программы в Листинге 12.

Листинг 12

#include <iostream>

using namespace std;

void dv(int a)

{

int b[100];

int i=0;

while(a>1)

{

b[i]=a%2;

a=(a-a%2)/2;

i++;

}

b[i]=a;

for(int j=i;j>=0;j–)

cout<<b[j];

}

int main

{

int a,b;

int c;

cin>>a>>b;

c=a|b;

cout<<endl;

dv(a);

cout<<" | ";

dv(b);

cout<<" = ";

dv(c);

c=a&b;

cout<<endl;

dv(a);

cout<<" & ";

dv(b);

cout<<" = ";

dv(c);

return 0;

}

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

Тест 1

a=10 b=8

Результат

1010 | 1000 =1010

1010 & 1000 =1000

Тест 2

a=11 b=3

Результат

1011 | 11 = 1011

1011 & 11 = 11

Сдвиг влево

Пример:

10 << 2 = 1000

Двоичная запись числа передвинется на 2 знака влево, на их место проставятся 0. Необходимо быть внимательными, так как в типе int и т.д. хранится ограниченное количество бит.

Сдвиг вправо

Пример:

100 >> 2 = 1

Двоичная запись числа передвинется на 2 знака вправо. 2 бита исчезнут.

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

С каждым битом выполняется инверсия.

Пример:

x = ~8;

8 – это 1000 в двоичной системе счисления, после инверсии с каждым битом: 1 меняется на 0, 0 на 1. При хранении числа, один бит отвечает за знак, поэтому знак числа тоже меняется. ~x=|~x|-1. Результат: ~8=-9.

Комментарии

Для красивого стиля и правил оформления кода, необходимо, чтобы в коде все функции, блоки и т.д. были расшифрованы. Комментарии бывают /*….*/ (все, что между косыми чертами и звездочкой есть комментарий), // (все, что после // и на одной строке есть комментарий), смотри Листинг 13.

Листинг 13

/*демонстративная программа*/

#include<iostream>

using namespace std;

int main

{

cout<<"Hello!"; //Вывод

«Hello!» в консоль

}

Строки

Во второй программе мы уже использовали строки. Специальные функции для работы со строками определены в библиотечном файле <string.h>.

Некоторые функции для работы со строками, представлены ниже.

char* strcpy(str1,str2) – копирует строку str2 в строку str1 c ‘\0’, возвращает str1.

char* strcat(str1,str2) – присоединяет str2 в конец строки str1, возвращает str1.

Листинг 14

Работа со строками

#include<stdio.h>

#include<string.h>

int main

{

char str1[100];

char str2[100];

printf("Vvedite stroky: \n");

scanf("%s",str1);

printf("Vvedenai stroka:\n%s \n",str1);

printf("Vvedite stroky: \n");

scanf("%s",str2);

printf("Vvedenai stroka:\n%s\n",str2);

strcat(str1,str2);

printf("Vvedenai stroka:\n%s\n",str1);

}

Задания:

Написать программу, в которой пользователь дописывает фразу, которую вывел компьютер, результат вывести на экран.

Закрепление материала

Операции

Присваивать значение переменной

a=10;

Вычислить значение выражения a^3+a^2-10.

Листинг 15

#include “stdio.h”

int main

{

int a,s;

printf(“Vvedite zna4enie a\n”);

scanf(“%d”,&a);

s=a*a*a+a*a-10;

printf(“Rezultat: %d”,s);

}

Операция инкрементирования и декрементирования

++ – операция увеличения на 1,

– – – операция уменьшения на 1.

Операции ++ и – – бывают постфиксные и префиксные.

Пример:

N++;

++N;

–-N;

N–;

Разница в постфиксной и префиксной форме в том, что ++N – прибавление 1 до того, как переменная используется, N++ после того. Аналогично, с операцией –. Смотри Листинг 16, результат на Рисунке 5.

Листинг 16

#include<iostream>

using namespace std;

int main

{

int y=3;

cout<<y++;

y=3;

cout<<endl<<++y;

}

Рисунок 5

Приоритет операций и порядок выполнения

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

Поделиться:
Популярные книги

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Ведун

Сухов Александр Евгеньевич
1. Второй шанс
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Ведун

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Эволюционер из трущоб. Том 3

Панарин Антон
3. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
6.00
рейтинг книги
Эволюционер из трущоб. Том 3

Бояръ-Аниме. Газлайтер. Том 34

Володин Григорий Григорьевич
34. История Телепата
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 34

Орленев

Мацкин Александр Петрович
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Орленев

Полигон

Гостева Ирина
S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
7.78
рейтинг книги
Полигон

Андер Арес

Грехов Тимофей
1. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Андер Арес

Первый среди равных. Книга II

Бор Жорж
2. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга II

Локки 2. Потомок бога

Решетов Евгений Валерьевич
2. Локки
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Локки 2. Потомок бога

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Эпоха Опустошителя. Том III

Павлов Вел
3. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эпоха Опустошителя. Том III

День поминовения

Нотебоом Сэйс
Проза:
современная проза
5.00
рейтинг книги
День поминовения

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV