Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117138
  • 博文数量: 24
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 261
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-07 17:49
文章分类

全部博文(24)

文章存档

2009年(24)

我的朋友

分类: C/C++

2009-08-07 17:55:46

// 计算两个32位unsigned乘积的高32位,利用给定的库函数signed_high_prod


#include<iostream>

using namespace std;

unsigned int unsigned_high_prod(unsigned ux, unsigned uy)
{
int sx = (int)ux;
int sy = (int)uy;

// ux = 2^n*SX(n-1) + SX

// uy = 2^n*SY(n-1) + SY

// ux*uy/2^n = SX(n-1)*SY(n-1)*2^n + [ SX(n-1)*SY + SY(n-1)*SX ] + SX*SY/2^n


return unsigned ( (x<0)*sy + (y<0)*sx + signed_high_prod(sx, sy) );

}

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