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);
}