которая переводит введенное положительное число в двоичное систему счисления и выводит на экран результат перевода.
Пример решения задания в Листинге 11.
Листинг 11
#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;
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 <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 бита исчезнут.
Одноместное поразрядное