Консультация № 178468
19.05.2010, 01:46
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты!
Помогите пожалуйста с задачей:
Дано целое неотрицательное число n. Получить два однобайтовых целых числа, одно из которых представляется последовательностью четных битов данного n, а другое - последовательностью нечетных битов. Bo всех случаях, где возможно, использовать побитовые операции.

Приложение:
Программу нужно написать на Borland C++ 5.02

Обсуждение

давно
Профессор
230118
3054
19.05.2010, 02:28
общий
это ответ
Здравствуйте, Даниил Цветков.

Пусть в n хранится исходное число. В m и k будем подсчитывать нужные значения.

Операция сдвига делит число без остатка на 2. Младший бит предварительно используется для побитового вычисления нужных чисел.
В j находится текущая степень 2.

Приложение:
void main()
{
int m,n,k,j;
n=100;
m=k=0;
j=0;
while(n!=0)
{
k+=((n&01)<<j);
n=n>>1;
m+=((n&01)<<j);
n=n>>1;
j++;
}
printf("%d %d",m,k);
}
Форма ответа