Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1505580
  • 博文数量: 399
  • 博客积分: 8508
  • 博客等级: 中将
  • 技术积分: 5302
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 09:28
个人简介

能力强的人善于解决问题,有智慧的人善于绕过问题。 区别很微妙,小心谨慎做后者。

文章分类

全部博文(399)

文章存档

2018年(3)

2017年(1)

2016年(1)

2015年(69)

2013年(14)

2012年(17)

2011年(12)

2010年(189)

2009年(93)

分类: LINUX

2010-08-31 15:08:20

第0位和第1位交换, 第2位和第3位交换.. 如何用最少的操作。比如11100100 交换后为11011000。

思想为: 把所有的奇数位左移一位,把所有的偶数位右移一位。

得到x的奇数位  x & 0x55555555, 得到x的偶数位 x & 0xAAAAAAAA

代码为:

1int swap_odd_even_bits(int x)
2{
3    return ( ((x & 0x55555555) << 1) | ((x & 0xAAAAAAAA) >> 1) );
4}
阅读(2031) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~