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 这个不是同一个问题!不是这么处理的!
4 年多之前 回复
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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言学习笔记之位运算求余
我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效。         在移位运算中我们可知,计算机中的数据都是0和1的序列,当我们把某个数字左移一位,该数字会扩大为原来的2倍;而将其右移一位时,该数字就会缩小为原来的1/2,即相当于对该数字做了一次被2
C语言位运算应用一:求一个数的二进制表示中1的个数
上一篇文章中,我们提到了位运算这个概念,在这里我们试着使用位运算来统计一个数的二进制表示中1的个数
用位运算实现求绝对值
一般情况下,如果要我们写一个求绝对值的函数,我们的实现很有可能会是这样: template T abs_Normal(T tNum) { if(tNum > 0.0) return tNum; else return -tNum; } 也就是说我们会用到一个if-else判断来决定是否反转符号位。在3D游戏软件,或一些对性能要求比较高的底层系
C语言之位运算/原码/反码/补码
所谓位运算,就是对一个比特(Bit)位进行操作。比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了。 C语言提供了六种位运算符: 运算符 & | ^ ~ >> 说明 按位与 按位或 按位异或 取反 左移 右移 *****************按位与运算(&) 一个比特(Bit
用位运算求一个数的绝对值
我们知道在我们对一个数进行位运算的时候,是在这个数的补码上进行的,对于补码我们知道,正数的补码是原码,负数的补码为原码除了最高位的符号位,取反,然后加1。把补码转换成原码的时候,正数还是原码,负数时把补码除了符号位取反然后加1(我们可以发现如果这时候连符号位也求反,然后加1,与以前不同的只是少了一个符号位,现在实际上就是这个数的绝对值)。所以我们可以得到对一个负数求绝对值的表达式为 in
通过位运算高效求绝对值
使用移位求绝对值
用C语言讲一讲位运算 入门级(详细图解)
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。
位运算(一):二进制中1的个数
一、题目:求二进制中1的个数        请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。        例如:10 二进制表示为:1010 ,该函数输出二 二、最初思路:        先检查二进制位最右边一位是否为1,将二进制位右移一位,这时最右边一位 变为原来的倒数第二位,再右移一位,依次循环运算,直到此数变为0。        怎样检查二进制位最右边一位是否为1呢
位运算取反、求绝对值
#include #include #include void swap(int *a,int *b){ *a ^= *b; //a = a^b *b ^= *a;   //b = a^b = a^b^b = a *a ^= *b; //a = a^b = a^b^a = b //*a^=*b^=*a^=*b } int _abs(int a){ int b;
c语言位运算c语言位运算
c语言位运算c语言位运算c语言位运算c语言位运算c语言位运算