解决思路
unsigned char shift_fun1(unsigned char data)
{
unsigned char i;
unsigned char tmp=0x00;
for(i=0;i<8;i++)
{
tmp=((data>>i)&0x01)|tmp;
if(i<7)
tmp=tmp<<1;
}
printf(" after shift fun1 data=%x ",tmp);
return tmp;
}
所谓的蝶式交换是这样的:
data=(data<<4)|(data>>4);
data=((data<<2)&0xcc)|((data>>2)&0x33);
data=((data<<1)&0xaa)|((data>>1)&0x55);
假设原始位序列为 0 1 0 1 1 0 0 1
data=((data<<1)&0xaa)|((data>>1)&0x55); 之后序列为1 0 0 1 1 0 1 0
data=((data<<1)&0xaa)|((data>>1)&0x55);之后位序为 8 7 6 5 4 3 2 1
由此完成了整个位的逆序转换,下面是具体的实现代码:
unsigned char shift_fun2(unsigned char data)
{
data=(data<<4)|(data>>4);
data=((data<<2)&0xcc)|((data>>2)&0x33);
data=((data<<1)&0xaa)|((data>>1)&0x55);
printf(" after shift fun2 data=%x ",data);
return data;
}
文章来源于:单片机与嵌入式 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关文章
C语言如何实现字节高低位互换?(2024-10-04 11:52:22)
C语言如何实现字节高低位互换?;
问题
对一个字节数据,逐个交换其高低位,例如11010001,经过0-7,1-6,2-5,3-4......
如何互换STM32中UART的Rx和Tx引脚及电平的反转(2023-05-31)
过软件改变Rx和Tx引脚、电平反转、高低反序、介绍超时等。
支持RXD和TXD管脚互换
有些时候,我们在外接RS232芯片时,可能会将RXD和TXD两根线接反。这类低级错误,一般是老司机才会犯。
如果......
如何采用STM32单片机实现SPI的驱动(2024-04-22)
制
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //不知有啥用
//定义波特率预分频的值:波特率预分频值为8
SPI_InitStructure.SPI_BaudRatePrescaler......
【STM32学习笔记】USART 新特性(2023-03-06)
【STM32学习笔记】USART 新特性;支持RXD和TXD管脚互换
很多时候,我们在外接RS232芯片时,很容易将RXD和TXD两根线接反。这类低级错误,一般是老司机才会犯。如果大家知道USART......
教你如何轻松写单片机的指针(2024-05-06)
下这个指针指向的地址
while(1)
{
}
}
那些规定C语言的大佬弄出来指针这个玩意有啥用?
3、指针有啥用?1.咱先使用下指针,然后具体有啥用就自己体会了。前面咱把一个变量的地址赋值给了指针了,然后搞C......
超声波外测液位开关常见故障及处理方法(2023-08-02)
设置1,相当于仪表校准标定清除,实际液位高于探头位置,设置1#参数0为1,点确认;实际液位低于探头位置,设置2#参数0为1,点确认。
2)双点开关,3#6#参数设置1,相当于高低位......
单片微机原理P1:80C51指令系统和编程方法(2024-08-21)
,Rn
5. XCHD:(半字节交换指令):
格式(目的:源)
A :@Ri(这个指令比较奇葩,只能操作@Ri,是把Ri的内容指向的内存的低四位和A的低四位互换)
6. SWAP:(自交......
51单片机独立按键和矩阵按键实现(2023-01-12)
按键松手检测(只有当按键松开时矩阵连接的管脚高位和低位才会互换继续检测行。否则进行循环延迟)
{
delay(100......
51单片机系列——基础指令(2024-08-19)
a ;a的内容循环右移
rlc a ;a的内容和进位位一起左移
rrc a ;a的内容和进位位一起右移
swap a ;a的低四位与高四位互换......
变频器的MODBUS-RTU模式通讯控制(2024-11-07 21:22:14)
低位:CRC校验码
CRC 高位:CRC校验码
帧尾:3.5个字节的通讯时间
在变频器的控制器,功能码主要用到两个03H和06H。
03H......