TBTK
Need a break? Support the development by playing Polarity Puzzles
TBTK::ExtensiveBitRegister Class Reference

Register of bits. More...

#include <ExtensiveBitRegister.h>

Public Member Functions

 ExtensiveBitRegister ()
 
 ExtensiveBitRegister (unsigned int numBits)
 
 ExtensiveBitRegister (const ExtensiveBitRegister &extensiveBitRegister)
 
 ~ExtensiveBitRegister ()
 
const ExtensiveBitRegister operator| (const ExtensiveBitRegister &rhs) const
 
const ExtensiveBitRegister operator & (const ExtensiveBitRegister &rhs) const
 
const ExtensiveBitRegister operator^ (const ExtensiveBitRegister &rhs) const
 
const ExtensiveBitRegister operator+ (const ExtensiveBitRegister &rhs) const
 
const ExtensiveBitRegister operator- (const ExtensiveBitRegister &rhs) const
 
bool operator< (const ExtensiveBitRegister &rhs) const
 
bool operator> (const ExtensiveBitRegister &rhs) const
 
bool operator== (const ExtensiveBitRegister &rhs) const
 
void operator+= (const ExtensiveBitRegister &rhs)
 
void operator-= (const ExtensiveBitRegister &rhs)
 
const ExtensiveBitRegisteroperator++ ()
 
const ExtensiveBitRegister operator++ (int)
 
const ExtensiveBitRegisteroperator-- ()
 
const ExtensiveBitRegister operator-- (int)
 
void operator= (const ExtensiveBitRegister &rhs)
 
void operator= (const unsigned int rhs)
 
ExtensiveBitRegister operator<< (unsigned int rhs) const
 
ExtensiveBitRegister operator>> (unsigned int rhs) const
 
void setBit (unsigned int position, bool values)
 
bool getBit (unsigned int position) const
 
bool toBool () const
 
unsigned int toUnsignedInt () const
 
void clear ()
 
void print () const
 
unsigned int getNumBits () const
 
unsigned int getNumOneBits () const
 
bool getMostSignificantBit () const
 
void setMostSignificantBit ()
 
void clearMostSignificantBit ()
 
ExtensiveBitRegister cloneStructure () const
 
std::string toString () const
 

Friends

std::ostream & operator<< (std::ostream &stream, const ExtensiveBitRegister &extensiveBitRegister)
 

Detailed Description

Register of bits.

The ExtensiveBitRegister is similar to the BitRegister, but allows for arbitrary number of bits to be stored and operated on.

Example

#include "TBTK/Streams.h"
#include "TBTK/TBTK.h"
using namespace TBTK;
int main(){
ExtensiveBitRegister bitRegister0(64);
ExtensiveBitRegister bitRegister1(64);
Streams::out << "Assignment\n";
bitRegister0 = 0xFF00FF00;
Streams::out << bitRegister0 << "\n";
Streams::out << "\nSet individual bits\n";
bitRegister0.setBit(2, 1);
bitRegister0.setBit(30, 0);
Streams::out << bitRegister0 << "\n";
bitRegister0 = 0xFFFF0000;
bitRegister1 = 0x00FF00FF;
Streams::out << "\nBitwise operations\n";
Streams::out << (bitRegister0 | bitRegister1) << "\n";
Streams::out << (bitRegister0 & bitRegister1) << "\n";
Streams::out << (bitRegister0 ^ bitRegister1) << "\n";
Streams::out << "\nCount number of ones\n";
Streams::out << bitRegister0.getNumOneBits() << "\n";
Streams::out << "\nClear a register\n";
bitRegister0.clear();
Streams::out << bitRegister0 << "\n";
Streams::out << "\nBit shift\n";
Streams::out << bitRegister1 << "\n";
Streams::out << (bitRegister1 << 1) << "\n";
Streams::out << (bitRegister1 << 2) << "\n";
Streams::out << (bitRegister1 >> 1) << "\n";
Streams::out << (bitRegister1 >> 2) << "\n";
}

Output

Assignment
0000000000000000000000000000000011111111000000001111111100000000
Set individual bits
0000000000000000000000000000000010111111000000001111111100000100
Bitwise operations
0000000000000000000000000000000011111111111111110000000011111111
0000000000000000000000000000000000000000111111110000000000000000
0000000000000000000000000000000011111111000000000000000011111111
Count number of ones
16
Clear a register
0000000000000000000000000000000000000000000000000000000000000000
Bit shift
0000000000000000000000000000000000000000111111110000000011111111
0000000000000000000000000000000000000001111111100000000111111110
0000000000000000000000000000000000000011111111000000001111111100
0000000000000000000000000000000000000000011111111000000001111111
0000000000000000000000000000000000000000001111111100000000111111

Constructor & Destructor Documentation

◆ ExtensiveBitRegister() [1/3]

TBTK::ExtensiveBitRegister::ExtensiveBitRegister ( )

Constructor.

◆ ExtensiveBitRegister() [2/3]

TBTK::ExtensiveBitRegister::ExtensiveBitRegister ( unsigned int  numBits)

Constructor.

◆ ExtensiveBitRegister() [3/3]

TBTK::ExtensiveBitRegister::ExtensiveBitRegister ( const ExtensiveBitRegister extensiveBitRegister)

Copy constructor.

◆ ~ExtensiveBitRegister()

TBTK::ExtensiveBitRegister::~ExtensiveBitRegister ( )

Destructor.

Member Function Documentation

◆ clear()

void TBTK::ExtensiveBitRegister::clear ( )
inline

Clear register.

◆ clearMostSignificantBit()

void TBTK::ExtensiveBitRegister::clearMostSignificantBit ( )
inline

Set the most significant bit.

◆ cloneStructure()

ExtensiveBitRegister TBTK::ExtensiveBitRegister::cloneStructure ( ) const
inline

Create a new ExtensiveBitRegister with the same strucutre.

◆ getBit()

bool TBTK::ExtensiveBitRegister::getBit ( unsigned int  position) const
inline

Get bit value.

◆ getMostSignificantBit()

bool TBTK::ExtensiveBitRegister::getMostSignificantBit ( ) const
inline

Return the most significant bit.

◆ getNumBits()

unsigned int TBTK::ExtensiveBitRegister::getNumBits ( ) const
inline

Return the number of bits in the register.

◆ getNumOneBits()

unsigned int TBTK::ExtensiveBitRegister::getNumOneBits ( ) const
inline

Returns the number of bits that are one.

◆ operator &()

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator& ( const ExtensiveBitRegister rhs) const

Bitwise and operator.

◆ operator+()

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator+ ( const ExtensiveBitRegister rhs) const
inline

Addition operator.

◆ operator++() [1/2]

const ExtensiveBitRegister & TBTK::ExtensiveBitRegister::operator++ ( )
inline

Increment operator.

◆ operator++() [2/2]

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator++ ( int  )
inline

Increment operator.

◆ operator+=()

void TBTK::ExtensiveBitRegister::operator+= ( const ExtensiveBitRegister rhs)
inline

+= operator.

◆ operator-()

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator- ( const ExtensiveBitRegister rhs) const
inline

Subtraction operator.

◆ operator--() [1/2]

const ExtensiveBitRegister & TBTK::ExtensiveBitRegister::operator-- ( )
inline

Decrement operator.

◆ operator--() [2/2]

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator-- ( int  )
inline

Decrement operator.

◆ operator-=()

void TBTK::ExtensiveBitRegister::operator-= ( const ExtensiveBitRegister rhs)
inline

-= operator.

◆ operator<()

bool TBTK::ExtensiveBitRegister::operator< ( const ExtensiveBitRegister rhs) const
inline

Less than operator.

◆ operator<<()

ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator<< ( unsigned int  rhs) const
inline

Left bitshift operator.

◆ operator=() [1/2]

void TBTK::ExtensiveBitRegister::operator= ( const ExtensiveBitRegister rhs)
inline

Assignment operator.

◆ operator=() [2/2]

void TBTK::ExtensiveBitRegister::operator= ( const unsigned int  rhs)
inline

Assignment operator.

◆ operator==()

bool TBTK::ExtensiveBitRegister::operator== ( const ExtensiveBitRegister rhs) const
inline

Comparison operator.

◆ operator>()

bool TBTK::ExtensiveBitRegister::operator> ( const ExtensiveBitRegister rhs) const
inline

Greater than operator.

◆ operator>>()

ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator>> ( unsigned int  rhs) const
inline

Right bitshift operator.

◆ operator^()

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator^ ( const ExtensiveBitRegister rhs) const
inline

Bitwise xor operator.

◆ operator|()

const ExtensiveBitRegister TBTK::ExtensiveBitRegister::operator| ( const ExtensiveBitRegister rhs) const
inline

Bitwise or operator.

◆ print()

void TBTK::ExtensiveBitRegister::print ( ) const
inline

Print bit register.

◆ setBit()

void TBTK::ExtensiveBitRegister::setBit ( unsigned int  position,
bool  values 
)
inline

Set value of bit at a specific position.

◆ setMostSignificantBit()

void TBTK::ExtensiveBitRegister::setMostSignificantBit ( )
inline

Set the most significant bit.

◆ toBool()

bool TBTK::ExtensiveBitRegister::toBool ( ) const
inline

Returns a bool that is false if all bits are zero, and true otherwise.

◆ toString()

std::string TBTK::ExtensiveBitRegister::toString ( ) const
inline

Get string representation of the ExtensiveBitRegister.

Returns
A string representation of the ExtensiveBitRegister.

◆ toUnsignedInt()

unsigned int TBTK::ExtensiveBitRegister::toUnsignedInt ( ) const
inline

Returns an unsigned int containing the least significant bits in the register.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  stream,
const ExtensiveBitRegister extensiveBitRegister 
)
friend

Writes the ExtensiveBitRegister toString-representation to a stream.

Parameters
streamThe stream to srite to.
extensiveBitRegisterThe ExtensiveBitRegister to write.
Returns
Reference to the output stream just written to.

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