快速反转一个字节

题目:比如一个字节的二进制表示为abcd efgh,要求输出hgfe dcba?

代码如下:
1unsigned char reverseChar(unsigned char c)
2{
3  c=(c&0x55)<<1 | (c&0xAA)>>1;
4  c=(c&0x33)<<2 | (c&0xCC)>>2;
5  c=(c&0x0F)<<4 | (c&0xF0)>>4;
6  return c;
7}

8

解释:第3行功能将abcd efgh变为badc fehg,第4行功能将badc fehg变为dcba hgfe,第5行功能将dcba hgfe变为hgfe dcba,OK!

思想类似“快速计算整数的二进制表示中含1的个数”,采用归并方法。

posted on 2010-10-29 18:50 oliver 阅读(582) 评论(0)  编辑 收藏 引用 所属分类: Algorithm


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔档案

文章分类

文章档案

个人专栏

技术网站

搜索

最新评论

阅读排行榜

评论排行榜