Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Doctor Nano
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 185
1

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

26.03.2014, 11:29. Просмотров 1565. Ответов 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();   
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 11:29
Ответы с готовыми решениями:

Сложить два числа в двоичной системе счисления в прямом коде
Здравствуйте! Помогите, пожалуйста, решить задачу. Сложить два числа в...

Как сложить два числа
как сложить два числа в с++

Как сложить два числа на битовом уровне?
Помогите срочно надо

Как сложить два случайных числа из массива?
Как сложить два случайных числа из массива с++

Как правильно сложить два больших (64 бита) числа?
Допустим есть два двоичных числа A и B. Размер каждого из них = 64 бита. ...

11
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 11:43 2
У тебя сложение в двоичной, а не в десятичной.
0
Doctor Nano
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 11:59  [ТС] 3
castaway, Повторюсь, мне нужно сложение сделать 2 с\с, а у меня там в коде 10 с\с.
C++
1
2
/*В этой строчке 10 с\с идет.*/
cod.a=cod.a+cod2.a;
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 12:02 4
Где там?
Повторюсь: компьютер складывает числа в 2-й сс.

Не по теме:

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

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

Не по теме:

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

0
SatanaXIII
Почетный модератор
Эксперт С++
5779 / 2777 / 380
Регистрация: 01.11.2011
Сообщений: 6,757
Завершенные тесты: 1
26.03.2014, 12:09 7
Цитата Сообщение от Doctor Nano Посмотреть сообщение
мне нужно сложение сделать 2 с\с, а у меня там в коде 10 с\с.
Вам нужно сделать, чтобы 1+1==0 и 1 в старший разряд пошло? Ну сделайте функцию сложения в столбик. И в нее загоняйте уже cod.byte.ax.
0
Doctor Nano
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 12:13  [ТС] 8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
чтобы 1+1==0 и 1 в старший разряд пошло?
Да, так.
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 12:14 9
Да. В 2-й сс.
0
Doctor Nano
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 185
26.03.2014, 12:15  [ТС] 10
Цитата Сообщение от castaway Посмотреть сообщение
Да. В 2-й сс.
Да, а как правильно то сделать?
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
26.03.2014, 12:19 11
Сравнивай поочередно разряды начиная с младшего. Что не получается?
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,944
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
0
26.03.2014, 12:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 12:36

Сложить два числа в одно
Здравствуйте, есть два числа в каждом может бить цифра от 1 до 20, пример 5 17...

Сложить два больших числа
Сообственно сабж.Идея понятна.Тк такого типа который может вместить все разряды...

Сложить два пятидесятизначных десятичных числа.
Пожалуйсто помогите решить задачу: Сложить два пятидесятизначных десятичных...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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