Chinaunix首页 | 论坛 | 博客
  • 博客访问: 629357
  • 博文数量: 105
  • 博客积分: 5389
  • 博客等级: 准将
  • 技术积分: 1290
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-29 11:13
文章分类

全部博文(105)

文章存档

2010年(23)

2009年(20)

2008年(62)

分类: C/C++

2009-07-23 17:58:36

1

c = (w1|w2)&ox01010101;

c = (w1&w2)&ox01010101;

w1 = (w1&0xFEFEFEFE)>>1;

w2 = (w2&0xFEFEFEFE)>>1;

w = w1 + w2 +- c;

2

#define avg_nornd(a,b)  (a&b)+(((a^b)&0xFEFEFEFE)>>1)
#define avg_rnd(a,b)     ( a|b)- (((a^b)&0xFEFEFEFE)>>1)

3

#define BYTE_VEC32(c) ((c)*0x01010101UL)

static inline uint32_t rnd_avg32(uint32_t a, uint32_t b)

{

    return (a | b) - (((a ^ b) & ~BYTE_VEC32(0x01)) >> 1);

}

static inline uint32_t no_rnd_avg32(uint32_t a, uint32_t b)

{

    return (a & b) + (((a ^ b) & ~BYTE_VEC32(0x01)) >> 1);

}

开动你牛X的脑袋~

阅读(1012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~