С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 187
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый день форумчане!
У меня программа по переводу из 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2014, 11:29
Ответы с готовыми решениями:

Сложить два числа в двоичной системе исчисления
Помогите, нужно сложить два числа в двоичной системе исчисления введённых с клавиатуры.

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

Как сложить два плюс два? если оба числа символьные?
Не могу сложить два числа в символьном виде, что бы получить третье (как сумма двух первых),...

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

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

Не по теме:

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

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

Не по теме:

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

0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
26.03.2014, 12:09 7
Цитата Сообщение от Doctor Nano Посмотреть сообщение
мне нужно сложение сделать 2 с\с, а у меня там в коде 10 с\с.
Вам нужно сделать, чтобы 1+1==0 и 1 в старший разряд пошло? Ну сделайте функцию сложения в столбик. И в нее загоняйте уже cod.byte.ax.
0
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 187
26.03.2014, 12:13  [ТС] 8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
чтобы 1+1==0 и 1 в старший разряд пошло?
Да, так.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
26.03.2014, 12:14 9
Да. В 2-й сс.
0
Cандальная шляпа
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 187
26.03.2014, 12:15  [ТС] 10
Цитата Сообщение от castaway Посмотреть сообщение
Да. В 2-й сс.
Да, а как правильно то сделать?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
26.03.2014, 12:19 11
Сравнивай поочередно разряды начиная с младшего. Что не получается?
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2014, 12:36
Помогаю со студенческими работами здесь

Как сложить два числа
Привет, есть элемент &lt;input type=&quot;hidden&quot; id=&quot;offset&quot; value=&quot;20&quot;&gt;, требуется изменить значение:...

Как сложить два числа?
не получается сложить два числа, они просто стоят друг за другом Private Sub Button1_Click(ByVal...

Как сложить два числа в паскале
Как сложить два числа в паскале? Я работаю в паскале в первый день, даже не могу складывать ((((

Как сложить два числа на masm?
.486 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include...

Как сложить два числа, сгенерированных случайно
Здрасте. В универе задали игру : нужно что бы выводилось два числа(в два текстбокса одной число),...

Как сложить два введённых пользователем числа
public class Globals { public EditText num1 = (EditText)findViewById(R.id.num1); public...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru