C语言字符位反转

昨天做了字符串反转,想到以前做过位反转,就记一下。

比如一个字符为“10100110”(十六进制数据为0xA6),反转后就成为“01100101”(十六进制数据为0x65)

代码如下:

//位反转
void reverse(unsigned char *data)
{
	unsigned char temp=0;//将反转的数据放在temp里
	int i;
	for(i=0;i<8;i++)
	{
		temp = temp <<1;  //temp左移
		temp = temp | (*data & 0x01);
		*data = *data>>1;   //data右移
	}
	*data = temp;
}

字符串发反转是以中间为界,相互交换数据,而位反转,在于移位。

 

 

 

你可能感兴趣的:(c语言)