⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hugeint.h

📁 将大数看作一个n进制数组
💻 H
字号:
#pragma once

#include <iostream>
using namespace std;
/******************************************************************/
///巨型整数头文件:HugeInt.h
///说明:适用于 Win32 project
/******************************************************************/
# define BI_MAXLEN 40
# define DEC 10 
# define HEX 16 

class HugeInt
{
public:
	int m_nSign;   //记录大数的正负符号,支持负值运算
	int m_nLength; //记录大数的位数
	unsigned long m_ulValue[BI_MAXLEN]; //定义一个长度为40的类型为unsigned long 的数组,用于记录每一位0x10000000进制的数

	HugeInt(); //构造函数
	HugeInt(int sign,int length,unsigned long value[BI_MAXLEN]);//通过实现成员变量构造函数
	HugeInt(HugeInt& A);//构造函数-HugeInt
	HugeInt(long A);//构造函数-long
	HugeInt(CString& A);//构造函数-字符串

	~HugeInt();//析构函数

	//将大数赋值为另一个大数
	HugeInt& operator=(HugeInt& A);

	//将大数赋值为编译器能够理解的任何整形常数或变量 
	HugeInt& operator=(unsigned __int64 A);


	//比较两个大数大小
	int Cmp(HugeInt& A);

	//计算两个大数的和
	HugeInt operator+(HugeInt& A);

	//重载函数以支持大数与普通整数相加
	HugeInt operator+(long A);

	//重载函数以支持大数与字符串相加
	HugeInt operator+(CString& A);

	//与另一个大数做加法,并把结果给自己
	HugeInt& operator+=(HugeInt& A);

	//与long做加法,并把结果给自己
	HugeInt& operator+=(long A);

	//与字符串做加法,并把结果给自己
	HugeInt& operator+=(CString& A);

	//计算两个大数的差
	HugeInt operator-(HugeInt& A);

	//重载函数以支持大数与普通整数相减
	HugeInt operator-(long A);

	//重载函数以支持大数与字符串相减
	HugeInt operator-(CString& A);

	//与另一个大数做减法,并把结果给自己
	HugeInt& operator-=(HugeInt& A);

	//与long做减法,并把结果给自己
	HugeInt& operator-=(long A);

	//与字符串做减法,并把结果给自己
	HugeInt& operator-=(CString& A);

	//计算两个大数的积
	HugeInt operator*(HugeInt& A);

	//重载函数以支持大数与普通整数相乘
	HugeInt operator*(long A);

	//重载函数以支持大数与字符串相乘
	HugeInt operator*(CString& A);

	//与另一个大数做乘法,并把结果给自己
	HugeInt& operator*=(HugeInt& A);

	//与long做乘法,并把结果给自己
	HugeInt& operator*=(long A);

	//与字符串做乘法,并把结果给自己
	HugeInt& operator*=(CString& A);

	//计算两个大数的商
	HugeInt operator/(HugeInt& A);

	//重载函数以支持大数与普通整数相除
	HugeInt operator/(long A);

	//重载函数以支持大数与字符串相除
	HugeInt operator/(CString& A);

	//与另一个大数做除法,并把结果给自己
	HugeInt& operator/=(HugeInt& A);

	//与long做除法,并把结果给自己
	HugeInt& operator/=(long A);

	//与字符串做除法,并把结果给自己
	HugeInt& operator/=(CString& A);

	//计算两个大数相除的余数
	HugeInt operator%(HugeInt& A);

	//重载函数以支持大数相除的余数
	HugeInt operator%(long A);

	//重载函数以支持大数与字符串相除的余数
	HugeInt operator%(CString& A);

	//与另一个大数求余,并把结果给自己
	HugeInt& operator%=(HugeInt& A);

	//与long做求余,并把结果给自己
	HugeInt& operator%=(long A);

	//与字符串做求余,并把结果给自己
	HugeInt& operator%=(CString& A);

	//判断是否大于另一个大数
	int operator>(HugeInt& A);

	//判断是否大于一个long型数
	int operator>(long A);

	//判断是否大于一个字符串
	int operator>(CString& A);

	//判断是否大于等于另一个大数
	int operator>=(HugeInt& A);

	//判断是否大于等于一个long型数
	int operator>=(long A);

	//判断是否大于等于一个字符串
	int operator>=(CString& A);

	//判断是否小于另一个大数
	int operator<(HugeInt& A);

	//判断是否小于一个long型数
	int operator<(long A);

	//判断是否小于一个字符串
	int operator<(CString& A);

	//判断是否小于等于另一个大数
	int operator<=(HugeInt& A);

	//判断是否小于等于一个long型数
	int operator<=(long A);

	//判断是否小于等于一个字符串
	int operator<=(CString& A);

	//判断是否等于另一个大数
	int operator==(HugeInt& A);

	//判断是否等于一个long型数
	int operator==(long A);

	//判断是否等于一个字符串
	int operator==(CString& A);

	//判断是否不等于等于另一个大数
	int operator!=(HugeInt& A);

	//判断是否不等于一个long型数
	int operator!=(long A);

	//判断是否不等于一个字符串
	int operator!=(CString& A);

	//前缀++
	HugeInt& operator++();

	//后缀++
	HugeInt& operator++(int);

	//前缀--
	HugeInt& operator--();

	//后缀--
	HugeInt& operator--(int);

	//输出运算符<<
	ostream& operator<<(ostream& out);

	//输出字符串
	CString toString();

};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -