📄 hugeint.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 + -