【问题标题】:Bitwise transpose of 8 bytes8 个字节的按位转置
【发布时间】:2011-01-15 16:25:31
【问题描述】:

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

00011100
00111000
00000001
00000000
11000000
00000000
11111111
01010101

我想得到以下8个字节:

00001010
00001011
01000010
11000011
11000010
10000011
00000010
00100011

因为我想在嵌入式平台上使用它,所以它应该尽可能快:-)

非常感谢所有想法!

【问题讨论】:

  • 这是什么意思?我看不到输入和所需输出之间的关系。您要使用简单的(256 字节)查找表吗?
  • @Richard:这是一个矩阵转置;行变成列,反之亦然。如果您读取结果的最左侧列,则它等于输入的第一行。由于有 64 个独立的输入位,因此查找表变得……很大。
  • 列越来越多,反之亦然。
  • @Richard:正如 unwind 所说,查找表需要太大(64 * 8 字节)。虽然它会产生一个非常快速的解决方案!
  • 我很想知道您要达到的目标。位图字体旋转?

标签: c embedded


【解决方案1】:

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

【讨论】:

  • 谢谢。这正是我想要的!
  • @Arnaud,这真的很酷......但是什么是需要这个功能的应用程序?
  • @vicatcu 例如,如果您需要在一个字节宽的 I/O 端口上输出 8 个串行数据流,这很有用。
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2012-08-21
  • 2012-11-16
  • 2023-02-24
  • 2022-05-04
  • 1970-01-01
相关资源
最近更新 更多