Поразрядная обработка целых чисел

Статус
Закрыто для дальнейших ответов.
03.10.2010
14
0
#1
Подскажите в чем ошибка???
Задание :
"В каждом байте длинного целого числа N поменять местами двоичные разряды в зеркальном порядке."


#include <stdio.h>
void PrintBit(unsigned int a)
{

int len = sizeof(int)*8;
unsigned int fl=1 << (len-1);
while (len>0)
{
if ((len % 4) == 0) printf(" ");
if ((a & fl) != 0) printf("1");
else printf("0");
len--;
fl >>=1;
}
printf("\n");
}

int main()
{

unsigned int a;
printf("Vvedite chislo: ");
scanf("%d",&a);
unsigned int b=0;
unsigned int temp=a;
int len = sizeof(int);
unsigned char *ta=(unsigned char *)&temp;
unsigned char *tb=(unsigned char *)&b;
int i;

while (len>0)
{
i=8;
while (i>0)
{
(*tb) <<=1;
(*tb)+=((*ta) & 1);
(*ta) >>=1;
i--;
}
len--;
ta++;
tb++;
}
printf("Dvouchnoe predstavlenue chisla:\n");
printf("Do: ");
PrintBit(a);
printf("Posle: ");
PrintBit:)mellow:;
return 0;
}
 
Статус
Закрыто для дальнейших ответов.