Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
#1

Как сложить побитно два числа в двоичной с/с - C++

26.03.2014, 11:29. Просмотров 1107. Ответов 11
Метки нет (Все метки)

Добрый день форумчане!
У меня программа по переводу из 10 с/с в 2 с/с.
Она сделана используя битовые поля. (см. код ниже)
Вопрос, а как сложить по битно два числа в двоичной с/с (опять же используя битовые поля)??
У меня есть здесь сложение, но в 10 с/с происходит.

Подскажите пожалуйста.

Не по теме:

Буду сильно благодарен, если мой код будет продолжен.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <conio.h>
#include <stdio.h>
int main()
{
    union{char a;
          struct{  unsigned a0:1;
                   unsigned a1:1;
                   unsigned a2:1;
                   unsigned a3:1;
                   unsigned a4:1;
                   unsigned a5:1;
                   unsigned a6:1;
                   unsigned a7:1;
                }byte;
         }cod,cod2;
 
    printf("\n\tx="); scanf("%d",&cod.a);
    printf("\tbit: %d %d %d %d %d %d %d %d\n",
        cod.byte.a7,cod.byte.a6,cod.byte.a5,cod.byte.a4,
        cod.byte.a3,cod.byte.a2,cod.byte.a1,cod.byte.a0);
    
    printf("\n\ty="); scanf("%d",&cod2.a);
    printf("\tbit: %d %d %d %d %d %d %d %d\n",
        cod.byte.a7,cod.byte.a6,cod.byte.a5,cod.byte.a4,
        cod.byte.a3,cod.byte.a2,cod.byte.a1,cod.byte.a0);
 
 
    cod.a=cod.a+cod2.a;
    printf("\n\tbit x+y: %d %d %d %d %d %d %d %d\n",
        cod.byte.a7,cod.byte.a6,cod.byte.a5,cod.byte.a4,
        cod.byte.a3,cod.byte.a2,cod.byte.a1,cod.byte.a0);
    _getch();   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4880 / 3016 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 11:43     Как сложить побитно два числа в двоичной с/с #2
У тебя сложение в двоичной, а не в десятичной.
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 11:59  [ТС]     Как сложить побитно два числа в двоичной с/с #3
castaway, Повторюсь, мне нужно сложение сделать 2 с\с, а у меня там в коде 10 с\с.
C++
1
2
/*В этой строчке 10 с\с идет.*/
cod.a=cod.a+cod2.a;
castaway
Эксперт С++
4880 / 3016 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 12:02     Как сложить побитно два числа в двоичной с/с #4
Где там?
Повторюсь: компьютер складывает числа в 2-й сс.

Не по теме:

Хотя ты темнее темного.. это все проясняет.

SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
26.03.2014, 12:04     Как сложить побитно два числа в двоичной с/с #5
Doctor Nano, может
C++
1
union{unsigned char a;
?
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 12:09  [ТС]     Как сложить побитно два числа в двоичной с/с #6
castaway, т.е. ↓↓↓ в этой строчке и происходит по битное сложение в 2 с\с?
C++
1
cod.a=cod.a+cod2.a;
И программа написана верно?

Не по теме:

Не давно начал осваивать с++ (с пол года), тонкостей в нём всех ещё не знаю.

SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
26.03.2014, 12:09     Как сложить побитно два числа в двоичной с/с #7
Цитата Сообщение от Doctor Nano Посмотреть сообщение
мне нужно сложение сделать 2 с\с, а у меня там в коде 10 с\с.
Вам нужно сделать, чтобы 1+1==0 и 1 в старший разряд пошло? Ну сделайте функцию сложения в столбик. И в нее загоняйте уже cod.byte.ax.
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 12:13  [ТС]     Как сложить побитно два числа в двоичной с/с #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
чтобы 1+1==0 и 1 в старший разряд пошло?
Да, так.
castaway
Эксперт С++
4880 / 3016 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 12:14     Как сложить побитно два числа в двоичной с/с #9
Да. В 2-й сс.
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 12:15  [ТС]     Как сложить побитно два числа в двоичной с/с #10
Цитата Сообщение от castaway Посмотреть сообщение
Да. В 2-й сс.
Да, а как правильно то сделать?
castaway
Эксперт С++
4880 / 3016 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 12:19     Как сложить побитно два числа в двоичной с/с #11
Сравнивай поочередно разряды начиная с младшего. Что не получается?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 12:36     Как сложить побитно два числа в двоичной с/с
Еще ссылки по теме:

C++ Как правильно сложить два больших (64 бита) числа?
C++ Сложить два числа, записанные в файле
Как сложить два случайных числа из массива? C++
Сложить два числа в одно C++
Сложить два больших числа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6514 / 4980 / 460
Регистрация: 14.02.2011
Сообщений: 16,489
26.03.2014, 12:36     Как сложить побитно два числа в двоичной с/с #12
Doctor Nano,
компьютер считает только в двоичной системе и понимает только её
даже если напишешь 10+10
все равно процессор переведет это в двоичную и сделает
0000 1010
+
0000 1010
-----------
0001 0100

но если тебе нужно этот результат на экран вывести
то это другой вопрос
поскольку Си не знает что такое двоичный формат числа
то придется реализовать его самостоятельно, например массив char
и реализовывать всю арифметику

Добавлено через 6 минут
например
C++
1
2
3
4
5
6
7
8
9
10
11
addBin(char a1[],char a2[])
{
  unsigned shar tmp=0;
  unsigned shar tmp1=0;
for(int i=0;i<8;i++)
{
   tmp1=a1[i]+a2[i]+tmp;
   a1[i]=tmp1&0x01;
   tmp=tmp1>>1;
 }
}
подразумевается что в элементе массива только два значения 0 1
Yandex
Объявления
26.03.2014, 12:36     Как сложить побитно два числа в двоичной с/с
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru