作业 HugeInteger 运算符 * 重载 完成结果记录

 

HugeInt HugeInt::operator * ( const HugeInt &mul )
{
	HugeInt temp;
	HugeInt tempT;
	HugeInt tempN;
	int carry = 0;
	int n = 0;

	for ( int i = 29; i >= 0; i-- ){
		
		for ( int t = 0; t <= 29; t++ ){
			tempT.integer[ t ] = 0;
			tempN.integer[ t ] = 0;

		}

		for ( int j = 29; j >= 0; j-- ){
			tempT.integer[ j ] = integer[ j ] * mul.integer[ i ] + carry;

			if ( tempT.integer[ j ] > 9 ){
				carry = tempT.integer[ j ] / 10;
				tempT.integer[ j ] %= 10;				

			}

 			else
				carry = 0;

		}
		
		for ( int y = 29; y >= 0; y-- )            // 移位处理
			tempN.integer[ y - n ] = tempT.integer[ y ];

		++n;

		temp = temp + tempN;

	}

	return temp;

}

 

       考虑到乘法运算,比如12 * 34,那么4先和12做乘法,然后3和12做乘法,之后两数相加得出结果,但是需要注意的是:3与12的乘积要左移一位后再与4和12的乘积做加法。依此类推,推之更大的数。

       主要是这个移位处理,费了我好多时间,终于搞定了~

posted on 2006-12-20 14:53 bullGao 阅读(390) 评论(0)  编辑 收藏 引用 所属分类: C++ programming


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


导航

<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

留言簿(1)

随笔分类

随笔档案

收藏夹

搜索

最新评论