📄 usuperint.h
字号:
// USuperInt.h: interface for the CUSuperInt class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_USUPERINT_H__3C01C36B_443D_411C_83E2_9C21B2815BD5__INCLUDED_)
#define AFX_USUPERINT_H__3C01C36B_443D_411C_83E2_9C21B2815BD5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*
无符号大整数类
作者:缪元虎,四川绵阳供电局
myh9999@vip.sina.com
QQ:3977993
最后修改时间:2003-8-10
*/
class CUSuperInt
{
public:
//构造及析构函数
CUSuperInt();
CUSuperInt(DWORD dwValue);
CUSuperInt(char* pszVal);
CUSuperInt(CUSuperInt& x);
virtual ~CUSuperInt();
public:
//以下定义的是运算
//重载的赋值运算符
CUSuperInt& operator = (CUSuperInt& x);
CUSuperInt& operator = (char* pszVal);
CUSuperInt& operator = (DWORD dwValue);
//重载的加法运算符
CUSuperInt& operator += (CUSuperInt& x);
CUSuperInt& operator += (DWORD dwValue);
CUSuperInt operator + (CUSuperInt& x);
CUSuperInt operator + (DWORD dwValue);
CUSuperInt operator ++(); //++a
CUSuperInt operator ++(int); //a++
//重载的减法运算符,因为是无符号数,所以结果为大数减小数得到的差
CUSuperInt& operator -= (CUSuperInt& x);
CUSuperInt& operator -= (DWORD dwValue);
CUSuperInt operator - (CUSuperInt& x);
CUSuperInt operator - (DWORD dwValue);
CUSuperInt& operator --(); //--a
CUSuperInt operator --(int); //a--
//重载的乘法运算符
CUSuperInt& operator *= (DWORD dwValue);
CUSuperInt& operator *= (CUSuperInt& x);
CUSuperInt operator * (DWORD dwValue);
CUSuperInt operator * (CUSuperInt& x);
//重载的除法运算符
DWORD operator /= (DWORD dwValue); //返回余数
CUSuperInt operator /= (CUSuperInt& x);//返回余数
CUSuperInt operator / (DWORD dwValue); //返回商
CUSuperInt operator / (CUSuperInt& x);//返回商
CUSuperInt operator % (CUSuperInt& x);
DWORD operator % (DWORD dwValue);
//重载的比较运算符
bool operator == (CUSuperInt& x);
bool operator == (DWORD dwValue);
bool operator != (CUSuperInt& x);
bool operator != (DWORD dwValue);
bool operator > (CUSuperInt& x);
bool operator > (DWORD dwValue);
bool operator >= (CUSuperInt& x);
bool operator >= (DWORD dwValue);
bool operator < (CUSuperInt& x);
bool operator < (DWORD dwValue);
bool operator <= (CUSuperInt& x);
bool operator <= (DWORD dwValue);
//乘2运算,即 // a = a * 2^dwTimes; 相当于左移一位二进制,低位补0
CUSuperInt& Double(DWORD dwTimes = 1);
//除2运算; 相当于右移一位二进制,高位边补0,低位舍弃
CUSuperInt& Half(DWORD dwTimes = 1);
public:
//以下定义的是常用的操作
//重新分配内存空间,用于增加数据长度,n为新长度
void Expand(DWORD n);
//压缩数据,以节省空间。指去掉高位多余的0。
void Compress();
//转换在十六进制数字符串
void ToHexStr(CString& s);
CString ToHexStr();
//转换成十进制数字符串
void ToDecStr(CString& s);
CString ToDecStr();
void Debug();
protected:
//辅助函数
inline DWORD LeastOver(DWORD n) ;
protected:
DWORD *pValue; //指向一个DWORD数组,用于存放数值
DWORD len; //DWORD数组的长度
DWORD last; //数组中的有效长度
};
const My_ErrorNo_OverFlow = 0;
const My_ErrorNo_ZeroByDiv = 1;
class CMyException
{
public:
CMyException(char* msg, UINT uErrorNo);
virtual ~CMyException();
char* m_szMsg;
UINT m_uErrorNo;
};
#endif // !defined(AFX_USUPERINT_H__3C01C36B_443D_411C_83E2_9C21B2815BD5__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -