Сумма двоичных чисел с++

362
09 декабря 2017, 08:39

Нужно выполнить операцию сложения двоичных чисел. Начал писать код и запутался в логике, в итоге программа выводит просто строчку из нулей (функция суммы в самом конце кода) Пришел к выводу, что наверное просто не понимаю, как осуществить сложение двоичных чисел, ибо весь мой код суммы состоит из набросков из кодов других программистов и своих додумок Буду очень признателен, если подскажите хотя бы логику как это сделать или укажите на мои ошибки p.s. сложить нужно именно два двоичных числа, а не сложить два десятичных и потом результат перевести в двоичный код.

  class BinaryTransformation  {   //класс для работы с двоичными числами
    private:
     int newNum1, newNum2;
     static const int bitsize = 8;
     int bits1[bitsize];
     int bits2[bitsize];
     int bitssum[bitsize];
     int p, k;
public:
    Calculate value, value1;
    void getNewNum(Calculate x, Calculate y) 
    {
        newNum1 = x.getValue();
        newNum2 = y.getValue1();
        cout << "newNum1 = " << newNum1 << endl;
        cout << "NewNum2 = " << newNum2 << endl;
    }

   void transformation1() 
   {
        for (int i = 0; i < bitsize; ++i) {
            if (newNum1 % 2 == 0) 
            {
                bits1[i] = 0;
            }
            else 
            {
                bits1[i] = 1;
            }
            newNum1 = newNum1/2;
        }
    }

    void showTransformation1()
    {
        for (int i = bitsize - 1; i >= 0; --i)
        {       
            cout << bits1[i];
        }
        cout << endl;
    }
    void transformation2() 
    {
        for (int j = 0; j < bitsize; ++j){
            if (newNum2 % 2 == 0)
            {
                bits2[j] = 0;
            }
            else {
                bits2[j] = 1;
            }
            newNum2 = newNum2 / 2;
        }
     }
    void showTransformation2() {
        for (int j = bitsize - 1; j >= 0; --j) 
        {
            cout << bits2[j];
        }
        cout << endl;
    }
    void bitSum() {
        for (int i = bitsize - 1; i >= 0; i--) {
            p = 0;
            bitssum[i] = bits1[i]+bits2[i]+p;
            bitssum[i + 1] = k % 2;
            p = p / 2;
        }

    }
    void showBitSum() {
        for (int i = 0; i<= bitsize; --i)
        {
            cout << bitssum[i];
        }
        for (int i = bitsize - 1; i >= 0; --i)
        {
            cout << bitssum[i];
        }
    }
};
    int main() {
        int a, b;
        Calculate n1;
        n1.setNum();
        n1.showNum();
        n1.sum();
        n1.sub();
        n1.mul();
        n1.div();
        n1.getValue();
        n1.getValue1();
        BinaryTransformation newNum1;

        newNum1.getNewNum(n1, n1);
        newNum1.transformation1();
        newNum1.showTransformation1();
        newNum1.transformation2();
        newNum1.showTransformation2();
        newNum1.bitSum();
        newNum1.showBitSum();
        system("pause");
        return 0;
READ ALSO
Удаление элемента. Односвязный список

Удаление элемента. Односвязный список

Функция foundel(List*&,int) совершает удаление n-го элемента, работает неправильно, знаю в чем ошибка, но исправить не получается

302
Задача про рыцарей и оруженосцев [требует правки]

Задача про рыцарей и оруженосцев [требует правки]

Суть задачи заключается в следующем:

271