TNB Library
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
CLongIntegerT< PLACE > クラステンプレートabstract

多倍長整数管理 [詳解]

#include <TnbLongInteger.h>

+ CLongIntegerT< PLACE > の継承関係図

公開メンバ関数

bool CanExpressInt (void) const
 [確認] 保持値確認. [詳解]
 
bool CanExpressLonglong (void) const
 [確認] 保持値確認. [詳解]
 
 CLongIntegerT (const CLongIntegerT &other)
 コピーコンストラクタ. [詳解]
 
 CLongIntegerT (LONGLONG val)
 代入コンストラクタ. [詳解]
 
 CLongIntegerT (void)
 コンストラクタ. [詳解]
 
virtual INT_PTR Compare (const CLongIntegerT< PLACE > &t) const
 [確認] 比較 [詳解]
 
virtual INT_PTR Compare (const TNB::CLongIntegerT< 8 > &t) const=0
 [確認] 比較 [詳解]
 
virtual void Deserialize (const IDeserializer &ds)
 [処理] デシリアライズ [詳解]
 
bool Divide (CLongIntegerT &_quotient, CLongIntegerT &_remainder, const CLongIntegerT &val) const
 [計算] 除算. [詳解]
 
bool GetBit (INDEX bitNo) const
 [取得] ビット取得. [詳解]
 
void GetRawData (CWorkMem &_rawData) const
 [取得] 生データ取得. [詳解]
 
size_t GetValidBitsCount (void) const
 [取得] 有効 bit 数取得. [詳解]
 
virtual bool IsEqual (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
bool IsMinus (void) const
 [確認] マイナス確認. [詳解]
 
bool IsZero (void) const
 [確認] ゼロ確認. [詳解]
 
bool operator!= (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
CLongIntegerToperator%= (const CLongIntegerT &val)
 [代入] 余り算代入. [詳解]
 
CLongIntegerToperator&= (const CLongIntegerT &val)
 [代入] AND 算代入. [詳解]
 
CLongIntegerToperator*= (const CLongIntegerT &val)
 [代入] 乗算代入. [詳解]
 
CLongIntegerT operator+ (void) const
 [計算] プラス符号. [詳解]
 
CLongIntegerT operator++ (int)
 [代入] インクリメント. [詳解]
 
CLongIntegerToperator++ (void)
 [代入] インクリメント. [詳解]
 
CLongIntegerToperator+= (const CLongIntegerT &val)
 [代入] 加算代入. [詳解]
 
INT_PTR operator- (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
CLongIntegerT operator- (void) const
 [計算] マイナス符号. [詳解]
 
CLongIntegerT operator-- (int)
 [代入] デクリメント. [詳解]
 
CLongIntegerToperator-- (void)
 [代入] デクリメント. [詳解]
 
CLongIntegerToperator-= (const CLongIntegerT &val)
 [代入] 減算代入. [詳解]
 
CLongIntegerToperator/= (const CLongIntegerT &val)
 [代入] 除算代入. [詳解]
 
bool operator< (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
CLongIntegerT operator<< (size_t val) const
 [計算] 左シフト. [詳解]
 
CLongIntegerToperator<<= (size_t val)
 [代入] 左シフト代入. [詳解]
 
bool operator<= (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
CLongIntegerToperator= (const CLongIntegerT &other)
 コピーオペレータ. [詳解]
 
CLongIntegerToperator= (LONGLONG val)
 代入オペレータ. [詳解]
 
bool operator== (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
bool operator> (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
bool operator>= (const TNB::CLongIntegerT< 8 > &t) const
 [確認] 比較 [詳解]
 
CLongIntegerT operator>> (size_t val) const
 [計算] 右シフト. [詳解]
 
CLongIntegerToperator>>= (size_t val)
 [代入] 右シフト代入. [詳解]
 
CLongIntegerToperator^= (const CLongIntegerT &val)
 [代入] XOR 算代入. [詳解]
 
CLongIntegerToperator|= (const CLongIntegerT &val)
 [代入] OR 算代入. [詳解]
 
CLongIntegerT operator~ (void) const
 [計算] ビット反転. [詳解]
 
const BYTE * RefRawData (void) const
 [参照] 生データ参照. [詳解]
 
virtual void Serialize (ISerializer &_sr) const
 [処理] シリアライズ [詳解]
 
void SetBit (INDEX bitNo, bool v=true)
 [設定] ビット設定. [詳解]
 
size_t SetHexString (LPCTSTR lpsz)
 [代入] 値代入. [詳解]
 
void SetRawData (size_t size, LPCVOID lpRawData)
 [設定] 生データ設定. [詳解]
 
size_t SetString (LPCTSTR lpsz)
 [代入] 値代入. [詳解]
 
CStr ToHexString (bool isUpperCase=true) const
 [取得] HEX文字列化. [詳解]
 
int ToInt (void) const
 [取得] int 取得. [詳解]
 
LONGLONG ToLonglong (void) const
 [取得] LONGLONG 取得. [詳解]
 
CStr ToString (void) const
 [取得] 文字列化. [詳解]
 
void Zero (void)
 [代入] ゼロ代入. [詳解]
 

静的公開メンバ関数

static CLongIntegerT FromHexString (LPCTSTR lpsz)
 [取得] 変換値取得. [詳解]
 
static CLongIntegerT FromString (LPCTSTR lpsz)
 [取得] 変換値取得. [詳解]
 
static size_t GetBitsCount (void)
 [取得] bit 数取得. [詳解]
 
static size_t GetBytesCount (void)
 [取得] byte 数取得. [詳解]
 
static CLongIntegerT GetMax (void)
 [取得] 最大値取得. [詳解]
 
static size_t GetMaxPlace (void)
 [取得] 最大桁数取得. [詳解]
 
static CLongIntegerT GetMin (void)
 [取得] 最小値取得. [詳解]
 

詳解

template<size_t PLACE = 8>
class TNB::CLongIntegerT< PLACE >

多倍長整数管理

64bit 以上の整数を扱うことが出来ます。
覚え書き
メモリには、リトルエンディアンで格納されています。
引数
PLACE桁数。2以上を指定できます。 PLACE x 32 bit までの値を扱えます。
覚え書き
最小値は内部管理の関係で、最大値 に -1 をかけた値になります。
PLACE の異なるクラス間では、計算できません。
必要ファイル
TnbLongInteger.h
日付
09/10/28 新規

TnbLongInteger.h42 行目に定義があります。

構築子と解体子

◆ CLongIntegerT() [1/3]

CLongIntegerT ( void  )

コンストラクタ.

覚え書き
保持している値は 0 になります。

TnbLongInteger.h50 行目に定義があります。

◆ CLongIntegerT() [2/3]

CLongIntegerT ( const CLongIntegerT< PLACE > &  other)

コピーコンストラクタ.

引数
otherコピー元.

TnbLongInteger.h59 行目に定義があります。

◆ CLongIntegerT() [3/3]

CLongIntegerT ( LONGLONG  val)

代入コンストラクタ.

引数
val初期値.

TnbLongInteger.h71 行目に定義があります。

関数詳解

◆ CanExpressInt()

bool CanExpressInt ( void  ) const

[確認] 保持値確認.

保持している値が int で表現可能か、確認をします。

戻り値
true表現可能。
false不可能。

TnbLongInteger.h888 行目に定義があります。

◆ CanExpressLonglong()

bool CanExpressLonglong ( void  ) const

[確認] 保持値確認.

保持している値が LONGLONG で表現可能か、確認をします。

戻り値
true表現可能。
false不可能。

TnbLongInteger.h909 行目に定義があります。

◆ Compare() [1/2]

virtual INT_PTR Compare ( const CLongIntegerT< PLACE > &  t) const
virtual

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

TnbLongInteger.h828 行目に定義があります。

◆ Compare() [2/2]

virtual INT_PTR Compare ( const TNB::CLongIntegerT< 8 > &  t) const
pure virtualinherited

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

◆ Deserialize()

virtual void Deserialize ( const IDeserializer ds)
virtual

[処理] デシリアライズ

引数
dsデシリアライザー。これからメンバの内容を取り出してください。
例外
CTnbException失敗時は、任意のスローの可能性があります。

ISerializableを実装しています。

TnbLongInteger.h1021 行目に定義があります。

◆ Divide()

bool Divide ( CLongIntegerT< PLACE > &  _quotient,
CLongIntegerT< PLACE > &  _remainder,
const CLongIntegerT< PLACE > &  val 
) const

[計算] 除算.

保持している値を指定の除算値で割り、結果を返します。

引数
[out]_quotient計算結果の商。
[out]_remainder計算結果の余り。
[in]val除算値.
戻り値
true成功.
false失敗(0割エラー).

TnbLongInteger.h816 行目に定義があります。

◆ FromHexString()

static CLongIntegerT FromHexString ( LPCTSTR  lpsz)
static

[取得] 変換値取得.

HEX文字列から値を作成します。

覚え書き
マイナス指定は出来ません。
文字列の頭に '0x' をつけないでください。
文字列の頭に頭に空白はつけないでください。
CLongIntegerT<4> val = CLongIntegerT<4>::FromHexString("8000000080e412ca");
static CLongIntegerT FromHexString(LPCTSTR lpsz)
[取得] 変換値取得.
引数
lpsz文字列.
戻り値
値.

TnbLongInteger.h1122 行目に定義があります。

◆ FromString()

static CLongIntegerT FromString ( LPCTSTR  lpsz)
static

[取得] 変換値取得.

文字列から値を作成します。

覚え書き
文字列の頭に空白はつけないでください。
CLongIntegerT<4> val = CLongIntegerT<4>::FromString("-123456789");
static CLongIntegerT FromString(LPCTSTR lpsz)
[取得] 変換値取得.
引数
lpsz文字列.
戻り値
値.

TnbLongInteger.h1103 行目に定義があります。

◆ GetBit()

bool GetBit ( INDEX  bitNo) const

[取得] ビット取得.

引数
bitNoビットNo。 0〜 GetBitsCount() 未満を指定できます。
戻り値
true指定ビットは1。
false指定ビットは0。

TnbLongInteger.h245 行目に定義があります。

◆ GetBitsCount()

static size_t GetBitsCount ( void  )
static

[取得] bit 数取得.

戻り値
bit数

TnbLongInteger.h1040 行目に定義があります。

◆ GetBytesCount()

static size_t GetBytesCount ( void  )
static

[取得] byte 数取得.

戻り値
byte数

TnbLongInteger.h1049 行目に定義があります。

◆ GetMax()

static CLongIntegerT GetMax ( void  )
static

[取得] 最大値取得.

管理できる最大の値を返します。

戻り値
値.

TnbLongInteger.h1069 行目に定義があります。

◆ GetMaxPlace()

static size_t GetMaxPlace ( void  )
static

[取得] 最大桁数取得.

10進数で表せる桁数を返します。 例えば、 4 なら 9999 〜 -9999 は表すことが出来ます。

戻り値
桁数.

TnbLongInteger.h1059 行目に定義があります。

◆ GetMin()

static CLongIntegerT GetMin ( void  )
static

[取得] 最小値取得.

管理できる最小の値を返します。

戻り値
値.

TnbLongInteger.h1085 行目に定義があります。

◆ GetRawData()

void GetRawData ( CWorkMem _rawData) const

[取得] 生データ取得.

管理している数値をBYTEの配列として取得します。

覚え書き
取得サイズは、 GetBytesCount() で得られる値と同じ長さになります。
引数
[out]_rawData生データが格納されます。

TnbLongInteger.h217 行目に定義があります。

◆ GetValidBitsCount()

size_t GetValidBitsCount ( void  ) const

[取得] 有効 bit 数取得.

覚え書き
保持している値がマイナスの場合、 GetBitsCount() と同じ値になります。
戻り値
bit数

TnbLongInteger.h935 行目に定義があります。

◆ IsEqual()

virtual bool IsEqual ( const TNB::CLongIntegerT< 8 > &  t) const
virtualinherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じ
false自分は t と異なる

TnbComparable.h73 行目に定義があります。

◆ IsMinus()

bool IsMinus ( void  ) const

[確認] マイナス確認.

保持している値の確認をします。

戻り値
trueマイナス(0未満)。
falseプラス(0以上)。

TnbLongInteger.h859 行目に定義があります。

◆ IsZero()

bool IsZero ( void  ) const

[確認] ゼロ確認.

保持している値の確認をします。

戻り値
trueゼロ。
falseゼロ以外

TnbLongInteger.h870 行目に定義があります。

◆ operator!=()

bool operator!= ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と異なる
false自分は t と同じ

TnbComparable.h98 行目に定義があります。

◆ operator%=()

CLongIntegerT & operator%= ( const CLongIntegerT< PLACE > &  val)

[代入] 余り算代入.

保持している値を指定の値で割り、余りの値を保持します。

引数
val除算値
戻り値
自分の参照.

TnbLongInteger.h445 行目に定義があります。

◆ operator&=()

CLongIntegerT & operator&= ( const CLongIntegerT< PLACE > &  val)

[代入] AND 算代入.

保持している値と指定の値と AND し、それを保持します。

引数
val
戻り値
自分の参照.

TnbLongInteger.h457 行目に定義があります。

◆ operator*=()

CLongIntegerT & operator*= ( const CLongIntegerT< PLACE > &  val)

[代入] 乗算代入.

保持している値に指定の値をかけ、それを保持します。

引数
val乗算値
戻り値
自分の参照.

TnbLongInteger.h421 行目に定義があります。

◆ operator+()

CLongIntegerT operator+ ( void  ) const

[計算] プラス符号.

そのままの値を返します。

戻り値
値.

TnbLongInteger.h312 行目に定義があります。

◆ operator++() [1/2]

CLongIntegerT operator++ ( int  )

[代入] インクリメント.

保持している値を返し、保持している値を +1 します。

戻り値
計算前の値。

TnbLongInteger.h647 行目に定義があります。

◆ operator++() [2/2]

CLongIntegerT & operator++ ( void  )

[代入] インクリメント.

保持している値を +1 します。

戻り値
自分の参照.

TnbLongInteger.h625 行目に定義があります。

◆ operator+=()

CLongIntegerT & operator+= ( const CLongIntegerT< PLACE > &  val)

[代入] 加算代入.

保持している値に指定の値を加え、それを保持します。

引数
val加算値
戻り値
自分の参照.

TnbLongInteger.h373 行目に定義があります。

◆ operator-() [1/2]

INT_PTR operator- ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

TnbComparable.h82 行目に定義があります。

◆ operator-() [2/2]

CLongIntegerT operator- ( void  ) const

[計算] マイナス符号.

保持している値に -1 をかけた値を返します。

戻り値
符号反転値.

TnbLongInteger.h322 行目に定義があります。

◆ operator--() [1/2]

CLongIntegerT operator-- ( int  )

[代入] デクリメント.

保持している値を返し、保持している値を -1 します。

戻り値
計算前の値。

TnbLongInteger.h613 行目に定義があります。

◆ operator--() [2/2]

CLongIntegerT & operator-- ( void  )

[代入] デクリメント.

保持している値を -1 します。

戻り値
自分の参照.

TnbLongInteger.h591 行目に定義があります。

◆ operator-=()

CLongIntegerT & operator-= ( const CLongIntegerT< PLACE > &  val)

[代入] 減算代入.

保持している値に指定の値を引き、それを保持します。

引数
val減算値
戻り値
自分の参照.

TnbLongInteger.h384 行目に定義があります。

◆ operator/=()

CLongIntegerT & operator/= ( const CLongIntegerT< PLACE > &  val)

[代入] 除算代入.

保持している値を指定の値で割り、それを保持します。

引数
val除算値
戻り値
自分の参照.

TnbLongInteger.h433 行目に定義があります。

◆ operator<()

bool operator< ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t より小さい
false自分は t と同じか大きい

TnbComparable.h106 行目に定義があります。

◆ operator<<()

CLongIntegerT operator<< ( size_t  val) const

[計算] 左シフト.

保持している値を指定の数だけ左シフトした値を返します。

引数
valシフト数
戻り値
値.

TnbLongInteger.h566 行目に定義があります。

◆ operator<<=()

CLongIntegerT & operator<<= ( size_t  val)

[代入] 左シフト代入.

保持している値を指定の数だけ左シフトした値を保持します。

引数
valシフト数
戻り値
自分の参照.

TnbLongInteger.h502 行目に定義があります。

◆ operator<=()

bool operator<= ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じか小さい
false自分は t より大きい

TnbComparable.h114 行目に定義があります。

◆ operator=() [1/2]

CLongIntegerT & operator= ( const CLongIntegerT< PLACE > &  other)

コピーオペレータ.

引数
otherコピー元.
戻り値
自分の参照.

TnbLongInteger.h281 行目に定義があります。

◆ operator=() [2/2]

CLongIntegerT & operator= ( LONGLONG  val)

代入オペレータ.

引数
val値.
戻り値
自分の参照.

TnbLongInteger.h295 行目に定義があります。

◆ operator==()

bool operator== ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じ
false自分は t と異なる

TnbComparable.h90 行目に定義があります。

◆ operator>()

bool operator> ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t より大きい
false自分は t と同じか小さい

TnbComparable.h122 行目に定義があります。

◆ operator>=()

bool operator>= ( const TNB::CLongIntegerT< 8 > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じか大きい
false自分は t より小さい

TnbComparable.h130 行目に定義があります。

◆ operator>>()

CLongIntegerT operator>> ( size_t  val) const

[計算] 右シフト.

保持している値を指定の数だけ右シフトした値を返します。

引数
valシフト数
戻り値
値.

TnbLongInteger.h579 行目に定義があります。

◆ operator>>=()

CLongIntegerT & operator>>= ( size_t  val)

[代入] 右シフト代入.

保持している値を指定の数だけ右シフトした値を保持します。

引数
valシフト数
戻り値
自分の参照.

TnbLongInteger.h534 行目に定義があります。

◆ operator^=()

CLongIntegerT & operator^= ( const CLongIntegerT< PLACE > &  val)

[代入] XOR 算代入.

保持している値と指定の値と XOR し、それを保持します。

引数
val
戻り値
自分の参照.

TnbLongInteger.h487 行目に定義があります。

◆ operator|=()

CLongIntegerT & operator|= ( const CLongIntegerT< PLACE > &  val)

[代入] OR 算代入.

保持している値と指定の値と OR し、それを保持します。

引数
val
戻り値
自分の参照.

TnbLongInteger.h472 行目に定義があります。

◆ operator~()

CLongIntegerT operator~ ( void  ) const

[計算] ビット反転.

戻り値
ビット反転した値.

TnbLongInteger.h357 行目に定義があります。

◆ RefRawData()

const BYTE * RefRawData ( void  ) const

[参照] 生データ参照.

管理している数値をBYTEの配列として参照します。

覚え書き
サイズは、 GetBytesCount() で得られる値です。
戻り値
生データアドレス。

TnbLongInteger.h234 行目に定義があります。

◆ Serialize()

virtual void Serialize ( ISerializer _sr) const
virtual

[処理] シリアライズ

引数
[out]_srシリアライザー。
例外
CTnbException失敗時は、任意のスローの可能性があります。

ISerializableを実装しています。

TnbLongInteger.h1006 行目に定義があります。

◆ SetBit()

void SetBit ( INDEX  bitNo,
bool  v = true 
)

[設定] ビット設定.

引数
bitNoビットNo。 0〜 GetBitsCount() 未満を指定できます。
vビット状態

TnbLongInteger.h260 行目に定義があります。

◆ SetHexString()

size_t SetHexString ( LPCTSTR  lpsz)

[代入] 値代入.

HEX文字列で、値を代入します。

覚え書き
マイナス指定は出来ません。
文字列の頭に '0x' をつけないでください。
文字列の頭に頭に空白はつけないでください。
CLongIntegerT<4> val;
val.SetHexString("8000000080e412ca");
引数
lpsz文字列.
戻り値
使用した数.

TnbLongInteger.h161 行目に定義があります。

◆ SetRawData()

void SetRawData ( size_t  size,
LPCVOID  lpRawData 
)

[設定] 生データ設定.

BYTEの配列を数値として設定します。

覚え書き
本クラスはリトルエンディアンで格納されています。
サイズは byte 指定可能ですが、通常、 GetBytesCount() で得られる値と同じ長さにします。 短い場合、上位は0になります。
引数
size生データサイズ.
lpRawData生データ.

TnbLongInteger.h196 行目に定義があります。

◆ SetString()

size_t SetString ( LPCTSTR  lpsz)

[代入] 値代入.

文字列で、値を代入します。

覚え書き
文字列の頭に空白はつけないでください。
CLongIntegerT<4> val;
val.SetString("-123456789");
引数
lpsz文字列.
戻り値
使用した数.

TnbLongInteger.h99 行目に定義があります。

◆ ToHexString()

CStr ToHexString ( bool  isUpperCase = true) const

[取得] HEX文字列化.

保持している値を HEX 文字列化します。

引数
isUpperCasefalse を指定すると小文字、 省略 か true を指定すると大文字で作成します。
戻り値
文字列.

TnbLongInteger.h959 行目に定義があります。

◆ ToInt()

int ToInt ( void  ) const

[取得] int 取得.

覚え書き
CanExpressInt() の結果が true でない場合、取得できる値は不定です。
戻り値

TnbLongInteger.h898 行目に定義があります。

◆ ToLonglong()

LONGLONG ToLonglong ( void  ) const

[取得] LONGLONG 取得.

覚え書き
CanExpressLonglong() の結果が true でない場合、取得できる値は不定です。
戻り値

TnbLongInteger.h923 行目に定義があります。

◆ ToString()

CStr ToString ( void  ) const

[取得] 文字列化.

保持している値を文字列化します。

戻り値
文字列.

TnbLongInteger.h975 行目に定義があります。

◆ Zero()

void Zero ( void  )

[代入] ゼロ代入.

覚え書き
保持している値は 0 になります。

TnbLongInteger.h80 行目に定義があります。