c++之大数 实现加减法

刚开始我见到网上的视频教程里有关于大数的实现,他是使用的链表来存储数值,我开始尝试也使用链表,但是失败了,我又试着使用数组来实现,经过两天的奋战,终于把这个类实现了,但遗憾的是只实现了加减法,因为自己的知识有限,未能实现乘法除法运算,如果有大神知道如何实现,小弟我感激不尽。

直接上代码

//文件BigNumber.h
#ifndef BIGNUMBER_H
#define BIGNUMBER_H

#include <iostream>
#include <string>

class BigNumber
{
public:
	BigNumber();
	BigNumber(std::string s_16);
	BigNumber(const BigNumber &number);
	/************************************************************************/
	/* 改变数值的操作					                */
	/************************************************************************/
	void setMaxValue();
	void setMinValue();
	BigNumber& operator++();//前缀重载
	const BigNumber operator++(int);//后缀重载
	BigNumber& operator--();//前缀重载
	const BigNumber operator--(int);//后缀重载
	const BigNumber& operator=(const BigNumber &number);
	const BigNumber& operator+=(const BigNumber &number);
	const BigNumber& operator-=(const BigNumber &number);

	/************************************************************************/
	/* 基本运算操作							        */
	/************************************************************************/
	const BigNumber operator+(const BigNumber &number);
	const BigNumber operator-(const BigNumber &number);
	const BigNumber operator*(const BigNumber &number);//————————未完成
	const BigNumber operator/(const BigNumber &number);//————————未完成
	/************************************************************************/
	/* 大小比较操作					                        */
	/************************************************************************/
	bool operator>(const BigNumber &number);
	bool operator<(const BigNumber &number);
	bool operator==(const BigNumber &number);
	bool operator<=(const BigNumber &number);
	bool operator>=(const BigNumber &number);

	/************************************************************************/
	/* 输出操作						                */
	/************************************************************************/
	friend std::ostream& operator<<(std::ostream &os, BigNumber &number);
	friend std::istream& operator>>(std::istream &is, BigNumber &number);

	const static unsigned int MaxValue = 0xFFFFFFFF;//一个无符号整数的最大值
	const static unsigned int MinValue = 0x00000000;//一个无符号整数的最小值
	const static unsigned int Size = 100;//存储区大小
private:
	unsigned int data[Size];//存储区

	void _add(unsigned int data[], unsigned int posion);//进位操作
	void _sub(unsigned int data[], unsigned int posion);//借位操作

	unsigned char toBit4(char c);//字符转数值
	char fromBit4(unsigned char c);//数值转字符

	void set_Bit16(std::string s_16);
	std::string get_Bit16();
};

#endif

//文件BigNumber.cpp
#include "BigNumber.h"

/************************************************************************/
/* 默认构造函数,初始数值为0                                            */
/************************************************************************/
BigNumber::BigNumber()
{
	setMinValu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值