比较 bit_interleaving

分为三部分的两种方法

方法一

0123456789->0369
13*3=39
5+4+4=13
//&:5   <<:4    |:4
#define puckThree(x){\
x &= 0x92492492;\
t1 = (x | (x << 2));\
x = t1 & 0xc30c30c3;\
t2 = (x | (x << 4));\
x = t2 & 0xf00f00f0;\
t3 = (x | (x << 8));\
x = t3 & 0xff0000ff;\
t4 = (x | (x << 16));\
x = t4 & 0xfff00000;\
}

方法二
可能出现的问题 因为32/6余2,32/12余8 ,所以会出现数据没有存储的地方,所以数据被冲掉。

代价:^ :3 >>:2 & :1 6*7=42
在这里插入图片描述
在这里插入图片描述

分为两部分方法:

01234567->02461357
4+8+12=24
//&:4   <<:8    ^:12
#define puck32(in)\
{\
temp1 = (in ^ (in >> 1)) & 0x22222222; in ^= temp1 ^ (temp1 << 1);\
temp1 = (in ^ (in >> 2)) & 0x0C0C0C0C; in ^= temp1 ^ (temp1 << 2);\
temp1 = (in ^ (in >> 4)) & 0x00F000F0; in ^= temp1 ^ (temp1 << 4);\
temp1 = (in ^ (in >> 8)) & 0x0000FF00; in ^= temp1 ^ (temp1 << 8);\
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值