2010-02-11 89 views
14

我正在寻找一种有效的C语言中按位转置8字节数据的算法。我的意思与此的是,如果我有8个字节这样的:8位字节的按位转置

00011100 
00111000 
00000001 
00000000 
11000000 
00000000 
11111111 
01010101 

我希望得到以下8个字节:

00001010 
00001011 
01000010 
11000011 
11000010 
10000011 
00000010 
00100011 

而且因为我想用这个嵌入式平台上,它应该尽可能快:-)

所有想法都非常感谢!

+2

这是什么意思?我没有看到输入与所需输出之间的关系。你想使用一个简单的(256字节)查找表吗? – 2010-02-11 11:19:25

+5

@Richard:这是一个矩阵转置;行成为列,反之亦然。如果您读取结果的最左边一列,则它等于输入的第一行。由于有64个独立的输入位,查询表变得很大。 – unwind 2010-02-11 11:22:36

+0

列正在变为行,反之亦然。 – tur1ng 2010-02-11 11:23:00

回答

18

参见Hacker's Delight,第7-3章。

+0

谢谢。这正是我所期待的! – 2010-02-11 11:18:22

+0

@Arnaud,这真的很酷......但是什么是需要这个功能的应用程序? – vicatcu 2010-02-19 23:30:55

+0

@vicatcu例如,如果您需要在一个字节宽的I/O端口上输出8个串行数据流,这非常有用。 – jms 2017-10-31 12:11:39

相关问题