Exemple #1
0
void printBinary(const binary& x)
{
    for(int i=x.size()-1; i>=0; --i)
    {
        std::cout << x.getNumberAt(i);
    }
    std::cout << std::endl;
}
Exemple #2
0
long long int convertBinToDec(const binary& x) // binary -> decimal converter
{
    long long int result = 0;

    for(int i=x.size()-1; i>=0; --i)
    {
        if(x.getNumberAt(i))
        {
            result += pow(2,i);
        }
    }

    return result;
}
Exemple #3
0
binary operator-(const binary& left, const binary& right)
{
    int n = left.size();
    binary result = initBinaryResult(n);

    binary rightTemp = right; // 2-complement
    rightTemp.fill(n);

    for(int i=0; i<n; ++i)
    {
        rightTemp.setNumberAt(i, !rightTemp.getNumberAt(i));
    }
    rightTemp = rightTemp + 1;

    bool overflow = false;
    for(int i=0; i<n; ++i)
    {
        bool leftI = left.getNumberAt(i);
        bool rightI = rightTemp.getNumberAt(i);

        result.setNumberAt(i, leftI ^ rightI ^ overflow);

        if((leftI & rightI)
           || (overflow & (leftI | rightI))
          )
        {
            overflow = true;
        }
        else
        {
            overflow = false;
        }
    }

    return result;
}
Exemple #4
0
bool lsb(const binary& x) // least significant bit
{
	return x.getNumberAt(0);
}