PRCYCoin  2.0.0.7rc1
P2P Digital Currency
Public Member Functions | List of all members
uint256 Class Reference

256-bit unsigned big integer. More...

#include <uint256.h>

Inheritance diagram for uint256:
[legend]
Collaboration diagram for uint256:
[legend]

Public Member Functions

 uint256 ()
 
 uint256 (const base_uint< 256 > &b)
 
 uint256 (uint64_t b)
 
 uint256 (const std::string &str)
 
 uint256 (const std::vector< unsigned char > &vch)
 
uint256SetCompact (uint32_t nCompact, bool *pfNegative=nullptr, bool *pfOverflow=nullptr)
 The "compact" format is a representation of a whole number N using an unsigned 32bit number similar to a floating point format. More...
 
uint32_t GetCompact (bool fNegative=false) const
 
uint64_t GetHash (const uint256 &salt) const
 
- Public Member Functions inherited from base_uint< 256 >
 base_uint ()
 
 base_uint (const base_uint &b)
 
 base_uint (uint64_t b)
 
 base_uint (const std::string &str)
 
 base_uint (const std::vector< unsigned char > &vch)
 
base_uintoperator= (const base_uint &b)
 
base_uintoperator= (uint64_t b)
 
bool operator! () const
 
const base_uint operator~ () const
 
const base_uint operator- () const
 
double getdouble () const
 
base_uintoperator^= (const base_uint &b)
 
base_uintoperator^= (uint64_t b)
 
base_uintoperator&= (const base_uint &b)
 
base_uintoperator|= (const base_uint &b)
 
base_uintoperator|= (uint64_t b)
 
base_uintoperator<<= (unsigned int shift)
 
base_uintoperator>>= (unsigned int shift)
 
base_uintoperator+= (const base_uint &b)
 
base_uintoperator+= (uint64_t b64)
 
base_uintoperator-= (const base_uint &b)
 
base_uintoperator-= (uint64_t b64)
 
base_uintoperator*= (uint32_t b32)
 
base_uintoperator*= (const base_uint &b)
 
base_uintoperator/= (const base_uint &b)
 
base_uintoperator++ ()
 
const base_uint operator++ (int)
 
base_uintoperator-- ()
 
const base_uint operator-- (int)
 
int CompareTo (const base_uint &b) const
 
bool EqualTo (uint64_t b) const
 
std::string GetHex () const
 
void SetHex (const char *psz)
 
void SetHex (const std::string &str)
 
std::string ToString () const
 
std::string ToStringReverseEndian () const
 
unsigned char * begin ()
 
const unsigned char * begin () const
 
unsigned char * end ()
 
const unsigned char * end () const
 
unsigned int size () const
 
uint64_t Get64 (int n=0) const
 
uint32_t Get32 (int n=0) const
 
unsigned int bits () const
 Returns the position of the highest bit set plus one, or zero if the value is zero. More...
 
uint64_t GetLow64 () const
 
unsigned int GetSerializeSize (int nType, int nVersion) const
 
void Serialize (Stream &s, int nType, int nVersion) const
 
void Unserialize (Stream &s, int nType, int nVersion)
 
uint64_t GetCheapHash () const
 
void SetNull ()
 
bool IsNull () const
 

Additional Inherited Members

- Public Types inherited from base_uint< 256 >
enum  
 
- Public Attributes inherited from base_uint< 256 >
uint32_t pn [WIDTH]
 

Detailed Description

256-bit unsigned big integer.

Definition at line 38 of file uint256.h.

Constructor & Destructor Documentation

◆ uint256() [1/5]

uint256::uint256 ( )
inline

Definition at line 41 of file uint256.h.

◆ uint256() [2/5]

uint256::uint256 ( const base_uint< 256 > &  b)
inline

Definition at line 42 of file uint256.h.

◆ uint256() [3/5]

uint256::uint256 ( uint64_t  b)
inline

Definition at line 43 of file uint256.h.

◆ uint256() [4/5]

uint256::uint256 ( const std::string &  str)
inlineexplicit

Definition at line 44 of file uint256.h.

◆ uint256() [5/5]

uint256::uint256 ( const std::vector< unsigned char > &  vch)
inlineexplicit

Definition at line 45 of file uint256.h.

Member Function Documentation

◆ GetCompact()

uint32_t uint256::GetCompact ( bool  fNegative = false) const

Definition at line 34 of file uint256.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHash()

uint64_t uint256::GetHash ( const uint256 salt) const

Definition at line 99 of file uint256.cpp.

Here is the caller graph for this function:

◆ SetCompact()

uint256 & uint256::SetCompact ( uint32_t  nCompact,
bool *  pfNegative = nullptr,
bool *  pfOverflow = nullptr 
)

The "compact" format is a representation of a whole number N using an unsigned 32bit number similar to a floating point format.

Old classes definitions.

The most significant 8 bits are the unsigned exponent of base 256. This exponent can be thought of as "number of bytes of N". The lower 23 bits are the mantissa. Bit number 24 (0x800000) represents the sign of N. N = (-1^sign) * mantissa * 256^(exponent-3)

Satoshi's original implementation used BN_bn2mpi() and BN_mpi2bn(). MPI uses the most significant bit of the first byte as sign. Thus 0x1234560000 is compact (0x05123456) and 0xc0de000000 is compact (0x0600c0de)

Bitcoin only uses this "compact" format for encoding difficulty targets, which are unsigned 256bit quantities. Thus, all the complexities of the sign bit and using base 256 are probably an implementation accident.

Definition at line 14 of file uint256.cpp.

Here is the caller graph for this function:

The documentation for this class was generated from the following files: