📄 zbint.h
字号:
// ZBInt.h: interface for the CZBInt class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ZBINT_H__76DAC552_004B_4587_B2A8_B72A5269DDCB__INCLUDED_)
#define AFX_ZBINT_H__76DAC552_004B_4587_B2A8_B72A5269DDCB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class __declspec(dllexport) CZBInt
{
public:
CZBInt();
virtual ~CZBInt();
CZBInt(CZBInt &cBI);
CZBInt(UINT uValue);
CZBInt(int iValue);
CZBInt(unsigned __int64 uValue);
CZBInt(__int64 iValue);
CZBInt(LPSTR pszValue);
public:
UINT m_uMaxLen;//缓冲区的最大长度
UINT m_uLen;//缓冲区的长度
UINT m_uAmount;//多少个存有数字
unsigned char *m_pszNum;//存放数的缓冲区,每个字节存两个数
UINT m_uSign;//符号, 0正, 1负
public:
void ReleaseAll(void);//释放所有,即清为零
void Clone(CZBInt &cBI);//克隆,使自己与cBI相同
public://赋值
void Set(UINT uValue);//设置数
void Set(int iValue);//设置数
void Set(unsigned __int64 uValue);//设置数
void Set(__int64 iValue);//设置数
void Set(CString &csValue);//设置数
void Set(char *pszValue);//设置数
public://字符串表示
void GetString(CString &csNum);//得到数的字符串表示
void GetBreakString(UINT uBreakNums, CString &csNum);//得到用逗号分隔开的数的字符串表示
//uBreakNums:多少个数字一分隔
UINT GetNums(void);//得到有多少位数字
UINT GetStringLen(void);//得到数的字符串表示的长度(不含结尾的0)
void GetString(LPSTR pszNum);//得到数的字符串表示
UINT GetBreakStringLen(UINT uBreakNums);//得到用逗号分隔开的数的字符串表示的长度(不含结尾的0)
void GetBreakString(UINT uBreakNums, LPSTR pszNum);//得到用逗号分隔开的数的字符串表示
//uBreakNums:多少个数字一分隔
public://比较
int Compare(CZBInt &cBI);//返回: 0:我与cBI相等, -1:我小于cBI, 1:我大于cBI
void Abs(void);//取绝对值
void SwitchSign(void);//反转符号,即正变负,负变正
BOOL IfZero(void);//是否为零
BOOL IfNegative(void);//是否为负
BOOL IfPositive(void);//是否为正或零
protected://加
void AbsoluteAdd(CZBInt &cBI);//绝对加
public://加
__declspec(dllexport) friend CZBInt Add(CZBInt &cBI1, CZBInt &cBI2);//加法
protected://减
void AbsoluteSub(CZBInt &cBI, UINT *puComp);//绝对减,
//puComp:0:相等, 1:我大于cBI, 2:cBI大于我
public://减
__declspec(dllexport) friend CZBInt Subtract(CZBInt &cBIS, CZBInt &cBIM);//减法: cBIS-cBIM
protected://乘法
void AbsoluteMul(CZBInt &cBI);//绝对乘
public://乘法
__declspec(dllexport) friend CZBInt Multi(CZBInt &cBI1, CZBInt &cBI2);//乘法
protected://除法
BOOL AbDiv_FindBig(UINT uQP, UINT *puNZP,
unsigned char *pszE, UINT uEs,
unsigned char *pszS, UINT uSs);
void ADv_Quo1(unsigned char *pszE, unsigned char *pszS, UINT uAmount,
unsigned char *pszMul,
unsigned char *pchQ);
//得到商
void ADv_Quo2(unsigned char *pszE, unsigned char *pszS, UINT uSAmount,
unsigned char *pszMul,
unsigned char *pchQ);
//得到商
BOOL AbsoluteDiv(CZBInt &cDivisor, CZBInt &cRes);//绝对除,
//本身是被除数, cDivisor除数, cRes余数, 返回false表示除数为0
public://除法
__declspec(dllexport) friend BOOL Divi(CZBInt &cDividend, CZBInt &cDivisor,
CZBInt &cQuot, CZBInt &cRes);//除法
//cDividend:被除数, cDivisor:除数
//cQuot:商, cRes:余数
//返回false代表被0除
public://奇偶和整除
BOOL IfEven(void);//是否偶数
BOOL IfOdd(void);//是否奇数
BOOL IfFactor10(void);//是否能被10整除
public://二进制串
void GetBinaryString(CString &csBinary);//得到二进制串,不考虑正负,一律作正数看
UINT GetBinaryStringLen(void);//得到二进制串的长度(不含结尾的0)(不考虑正负,一律作正数看)
void GetBinaryString(LPSTR pszBinary);//得到二进制串,不考虑正负,一律作正数看
public://运算符重载
CZBInt & operator=(CZBInt &cBI);
CZBInt & operator=(UINT uValue);
CZBInt & operator=(int iValue);
CZBInt & operator=(unsigned __int64 uValue);
CZBInt & operator=(__int64 iValue);
CZBInt & operator=(LPSTR pszValue);
__declspec(dllexport) friend BOOL operator==(CZBInt &cBI1, CZBInt &cBI2);//cBI1==cBI2
__declspec(dllexport) friend BOOL operator!=(CZBInt &cBI1, CZBInt &cBI2);//cBI1!=cBI2
__declspec(dllexport) friend BOOL operator>(CZBInt &cBI1, CZBInt &cBI2);//cBI1>cBI2
__declspec(dllexport) friend BOOL operator>=(CZBInt &cBI1, CZBInt &cBI2);//cBI1>=cBI2
__declspec(dllexport) friend BOOL operator<(CZBInt &cBI1, CZBInt &cBI2);//cBI1<cBI2
__declspec(dllexport) friend BOOL operator<=(CZBInt &cBI1, CZBInt &cBI2);//cBI1<=cBI2
__declspec(dllexport) friend CZBInt operator+(CZBInt &cBI1, CZBInt &cBI2);
__declspec(dllexport) friend CZBInt operator-(CZBInt &cBIS, CZBInt &cBIM);
__declspec(dllexport) friend CZBInt operator*(CZBInt &cBI1, CZBInt &cBI2);
__declspec(dllexport) friend CZBInt operator/(CZBInt &cDividend, CZBInt &cDivisor);
__declspec(dllexport) friend CZBInt operator%(CZBInt &cDividend, CZBInt &cDivisor);
};
#endif // !defined(AFX_ZBINT_H__76DAC552_004B_4587_B2A8_B72A5269DDCB__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -