2013-03-09 94 views
-1

我试图:位至字节在C++

  1. 转换一组8个的整数,所有的值为0或1,为一个字节
  2. 逆转该字节的比特顺序
  3. 打印该字节的值(以什么格式?)(我可以猜到,直到我有它在这里)

此外,我不允许使用STL的这个问题。

+4

你应该尝试过一些东西,并被一个bug卡住了,然后用上述代码问你的问题。您能否提供代码给您提供问题? – didierc 2013-03-09 23:37:55

+0

看看std :: bitset,它可能会帮助你。 – 2013-03-09 23:39:25

+0

你可以先查看[这篇文章](http://stackoverflow.com/questions/63776)吗? – StarPinkER 2013-03-09 23:42:58

回答

1

所以,你想颠倒一个字节的位。也就是说,该位应移动这样:

from: 7 6 5 4 3 2 1 0 
to: 0 1 2 3 4 5 6 7 

此代码将做到这一点,粗暴 - 如果你搜索,你可以找到更好的算法。你能看到它是如何工作的吗?

uint8_t reverse_bits(uint8_t byte) 
{ 
    return ((byte & 0x01) << 7) 
      |((byte & 0x02) << 5) 
      |((byte & 0x04) << 3) 
      |((byte & 0x08) << 1) 
      |((byte & 0x10) >> 1) 
      |((byte & 0x20) >> 3) 
      |((byte & 0x40) >> 5) 
      |((byte & 0x80) >> 7); 
} 
+0

这完全有效,thanx,我不能ü – 2013-03-10 00:05:08

+0

你现在可以自己建立字节? – Useless 2013-03-10 00:06:25

+0

我正在处理这个问题,它没有出来 – 2013-03-10 00:07:59

-1

一个简单的方法是屏蔽剩余的位,正如您在way to read individual bits中看到的那样。

+0

这个链接也有它的答案,可以起来 – 2013-03-10 00:05:29