C语言位运算 求大神帮忙

题1:编写一个程序,输出一个char类型数据的镜像。(既假如
一个char类型数的二进制码是01100001那输出应为10000110)。

#include
#include

char Reverse(char *src)
{
char *start;
char *end;
start = src;
//printf("%d\n",start);
end = src + sizeof(char)
(strlen(src)-1);
char p;
while(start<end)
{
p =*start;
*start = *end;
*end = p;
start=start+sizeof(char);
end = end - sizeof(char);

}
return src;
}
int main()
{
char src[] = "1001101010";

char *result = Reverse(src);

int j = 0;
printf("%s",src);
scanf("%d",&j);
return 0;    

}
不知道满意否。

这个不是同一个问题!不是这么处理的!

/**

  • @file bitrev.c
  • @brief
    */

#include
#include
#include

void
bitprt(unsigned char u)
{
unsigned char m;

for (m = 0x80; m; m >>= 1) {
    putchar('0' + !!(m & u));
}
putchar('\n');

}

unsigned char
bitrev(unsigned char u)
{
u = (u & 0x55) << 1 | (u & 0xAA) >> 1;
u = (u & 0x33) << 2 | (u & 0xCC) >> 2;
u = (u & 0x0F) << 4 | (u & 0xF0) >> 4;

return u;

}

int
main(int argc, char *argv[])
{
unsigned char u;

u = 0x61;
bitprt(u);
u = bitrev(u);
bitprt(u);
u = bitrev(u);
bitprt(u);
putchar('\n');


srand(time(NULL));
u = rand();
bitprt(u);
u = bitrev(u);
bitprt(u);
u = bitrev(u);
bitprt(u);
putchar('\n');

u = rand();
bitprt(u);
u = bitrev(u);
bitprt(u);
u = bitrev(u);
bitprt(u);
putchar('\n');

return 0;

}

/* output
01100001
10000110
01100001

00011011
11011000
00011011

11110001
10001111
11110001
*/


#include<stdio.h>

unsigned char reverse(unsigned char c)
{
    c = (c & 0x55) << 1 | (c & 0xAA) >> 1;    //按两位翻转一次
    c = (c & 0x33) << 2 | (c & 0xCC) >> 2;    //按四位翻转一次
    c = (c & 0x0F) << 4 | (c & 0xF0) >> 4;    //按八位翻转一次
    return c;
}

int main()
{
    unsigned char c = 0xac; // 二进制为 10101100

    printf(" %X -> %X \n",c,reverse(c)); //  镜像之后  00110101

  //输出结果 : AC -> 35 

    return 0
}