Программирование на С, С++ - страница 4

Шрифт
Интервал


Листинг 9

1#include

2using namespace std;

3

4 int main()

5 {

6      int i=10;

7      cout<

8      {

9            int i=11;

10 cout<

11      }

12}

Преобразование типов

В зависимости от версии компилятора, округление будет либо в большую, либо в меньшую сторону. Смотри Листинг 10, Рисунок 3.

Листинг 10

#include

using namespace std;

int main()

{

int y;

y=(int)(3/10);

cout<

y=(int)(10/3);

cout<

}

Рисунок 3

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

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

Пример решения задания в Листинге 11.

Листинг 11

#include

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<

}

int main()

{

int a;

cin>>a;

dv(a);

return 0;

}

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

Тест 1

a=10

Результат

1010

Тест 2

a=2

Результат

10

Тест 3

a=8

Результат

1000

Поразрядные операции применимы только к целочисленным аргументам (char, short, int и long).

& – поразрядное И

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

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

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

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

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

В побитовых операциях работа идет над каждым битом.

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

Пример:

8 | 10 = 10

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

Рисунок 4

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

Пример:

8 & 10 = 8

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

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

Листинг 12

#include

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<

}

int main()

{

int a,b;

int c;

cin>>a>>b;

c=a|b;

cout<

dv(a);

cout<<" | ";

dv(b);

cout<<" = ";

dv(c);

c=a&b;

cout<

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