2 rexlfs Rexlfs 于 2014.03.20 09:48 提问

C语言位运算 求大神帮忙

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

3个回答

slamzwl
slamzwl   2014.03.20 14:37

#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;    

}
不知道满意否。

Rexlfs
Rexlfs 这个不是同一个问题!不是这么处理的!
3 年多之前 回复
Rexlfs
Rexlfs   2014.03.27 18:33

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

mymtom
mymtom   Rxr 2014.11.10 15:14

/**

  • @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
*/

Csdn user default icon
上传中...
上传图片
插入图片