C语言数据逆序操作处理

此文用于记录用C语言开发进行嵌入式开发,对位操作的相关处理手段。

以下是详解

假设data = 0x59 ,二进制表示位 0101 1001

第一步操作:将前后四位进行交换

data << 4 变成了 1001 0000 ,data >> 4变成了 0000 0101 ,将 1001 0000 和 0000 0101进行位或处理,有1为1,全0为0。

得到的结果为 data = 1001 0101。可以发现四位已经交换了。

第二步操作:将数据两两进行交换

第一步操作之后,data = 1001 0101

data << 2 变成了 0101 0100,和 0xcc即1100 1100进行位与操作,有0为0,全1为1。得到的结果是 0100 0100。

data >> 2 变成了 0010 0101,和0x33即0011 0011进行位与操作,有0为0,全1为1。得到的结果是 0010 0001。

再将两次操作的结果进行位或运算,得到的结果是 data = 0110 0101。//注意此时的0101是进行了交换的

第三步:将数据中间两两进行对换

第二步操作之后,data = 0110 0101

data << 1 变成了 1100 1010,和0xaa即1010 1010进行位与操作,得到的结果是 1000 1010。

data >> 1 变成了 0011 0010,和0x55即0101 0101进行位与操作,得到的结果是 0001 0000。

再将两次操作的结果进行位或运算得到的结果是 1001 1010。此时已经完成了和原数据0101 1001的逆序操作。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值