个人感觉最优的按位翻转数据算法

unsigned char ReverseBits(unsigned char ch)

  1. {
  2. ch = (ch & 0x55) << 1 | (ch >> 1) & 0x55;
  3. ch = (ch & 0x33) << 2 | (ch >> 2) & 0x33;
  4. ch = (ch & 0x0F) << 4 | (ch >> 4) & 0x0F;
  5. return ch;
  6. }

0x55 -> 01010101 B 

0x33 -> 00110011 B 

0x0F -> 00001111 B

从中可以看出,是先将相连的两bits 对调--实现相连2 bits数据翻转;接着两个相连的“2 bits组合”对调--实现相连4 bits数据翻转;再下来就是将两个相连的“4 bits组合”对调--即可以完成对一个字符8 bits的翻转。

个人理解:针对16bit和32位及以上位数的数据交换,延续此思路即可,对应的掩码设置为0x00FF和0x0000FFFF即可。


原博客:https://blog.csdn.net/maliqiqaz/article/details/38408473

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值