Нужно выполнить операцию сложения двоичных чисел. Начал писать код и запутался в логике, в итоге программа выводит просто строчку из нулей (функция суммы в самом конце кода) Пришел к выводу, что наверное просто не понимаю, как осуществить сложение двоичных чисел, ибо весь мой код суммы состоит из набросков из кодов других программистов и своих додумок Буду очень признателен, если подскажите хотя бы логику как это сделать или укажите на мои ошибки 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;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Функция foundel(List*&,int) совершает удаление n-го элемента, работает неправильно, знаю в чем ошибка, но исправить не получается
Всем доброго времени суток