📄 hugeinteger.h
字号:
/*********************************************************************\
* Copyright (c) 2004 by Wangtao, School of Computer and Information *
* Technology, Beijing Jiaotong University, Beijing. *
* All Rights Reserved. *
* *
* Date:2004-07-26 *
* *
* Author:王涛 *
* *
* Filename:HugeInteger.h *
* *
* Description:CHugeInteger类的头文件 *
* 支持大数运算. *
* *
* Modify List: *
* 2004-07-26 created by wangtao *
* 定义了加减乘除及乘方,阶乘等接口. *
* *
* *
\*********************************************************************/
#ifndef _HEADFILE_HUGEINTEGER
#define _HEADFILE_HUGEINTEGER
#define HI_MAXLEN 1280
#define DEC 10
#define HEX 16
#include <string>
using namespace std;
class CHugeInteger
{
public:
// 构造函数和析构函数
CHugeInteger();
CHugeInteger(int nNum);
CHugeInteger(unsigned __int64 llNum);
CHugeInteger(const CHugeInteger& hInteger);
~CHugeInteger();
// '='赋值运算符
CHugeInteger& operator = (int nNum);
CHugeInteger& operator = (unsigned __int64 llNum);
CHugeInteger& operator = (const CHugeInteger& right);
// 比较运算符
bool operator == (CHugeInteger& right);
bool operator != (CHugeInteger& right);
bool operator > (CHugeInteger& right);
bool operator >= (CHugeInteger& right);
bool operator < (CHugeInteger& right);
bool operator <= (CHugeInteger& right);
bool operator == (int right);
bool operator != (int right);
bool operator > (int right);
bool operator >= (int right);
bool operator < (int right);
bool operator <= (int right);
// 加法运算符
CHugeInteger operator + (CHugeInteger& right);
CHugeInteger operator + (int right);
CHugeInteger& operator += (CHugeInteger& right);
CHugeInteger& operator += (int right);
CHugeInteger& operator ++ ();
// 减法运算符
CHugeInteger operator - (CHugeInteger& right);
CHugeInteger operator - (int right);
CHugeInteger& operator -= (CHugeInteger& right);
CHugeInteger& operator -= (int right);
CHugeInteger& operator -- ();
// 乘法运算符
CHugeInteger operator * (CHugeInteger& right);
CHugeInteger operator * (unsigned int right);
CHugeInteger& operator *= (CHugeInteger& right);
CHugeInteger& operator *= (unsigned int right);
// 除法运算符
CHugeInteger operator / (CHugeInteger& right);
CHugeInteger operator / (unsigned int right);
CHugeInteger& operator /= (CHugeInteger& right);
CHugeInteger& operator /= (unsigned int right);
// 取余运算符
CHugeInteger operator % (CHugeInteger& right);
int operator % (unsigned int right);
CHugeInteger& operator %= (CHugeInteger& right);
CHugeInteger& operator %= (unsigned int right);
// 幂指数运算
CHugeInteger operator ^ (unsigned int right);
CHugeInteger& operator ^= (unsigned int right);
// 阶乘
static CHugeInteger Factorial(unsigned int n, bool bDouble = false);
// 绝对值
static CHugeInteger Abs(CHugeInteger& n);
public:
// 获的该整数二进制位数
int GetBitNum();
// 获取某二进制位值
bool GetBit(unsigned int bitIndex);
// 设置某二进制位值
void SetBit(unsigned int bitIndex, bool bSet = true);
// 抽取中间一段位串,形成新的整数
CHugeInteger ExtractBits(int lindex, int rindex, bool bSign = false);
// 格式化输出
bool Format(string& strOutText, unsigned int system = DEC);
// 将超大整数转换为double类型表示
double ToDouble();
// 将超大整数的第一个32位取出表示成UINT
// UINT ToUINT();
void Print();
protected:
int m_nSign; // 符号
int m_nLength; // 长度
unsigned int m_ulValue[HI_MAXLEN];
protected:
int Compare(CHugeInteger& hInteger);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -