Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сложение в двоичной системе счисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с памятью. (Незнаю как правильно назвать тему). http://www.cyberforum.ru/cpp-beginners/thread345119.html
Программа пример: #include <iostream> void main() { int a, b, c; std::cin >> a; std::cin >> b;
C++ Взаимодействие процессов Нужно написать задачу, в которой дано 10 процессов (там P1, P2, …, Р10, например) Функционирование и взаимодействие процессов следующее: • P1 (запускается пользователем): Запустить процессы P2, Р3,... http://www.cyberforum.ru/cpp-beginners/thread345116.html
Среда разработки на Symbian 9.1 C++
Доброго времени суток. У меня есть старый Nokia E61(qwerty с Os 9.1). Так вот, суть: Я хочу заниматься кодингом когда PC не рядом. Есть ли под среды symbian? (С++) КОМПИЛЯЦИЯ НЕ ОБЯЗАТЕЛЬНА,...
НОК для N чисел C++
//--------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> ...
C++ Принятие русского шрифта в консоли http://www.cyberforum.ru/cpp-beginners/thread345078.html
Здрасте! Я написал програму, которая должна использовать русский шрифт, но она его не распознает. Для того, что бы она отображала русский текст, я добавил команду setlocale( LC_ALL,"Russian" ); но...
C++ Переменные среды Windows Как в c++ использовать переменные среды windows? Например я хочу открыть текстовый файл в каталоге C:\documents and settings\user\1.txt Переменная среда данного каталога выглядит вот так:... подробнее

Показать сообщение отдельно
Thinker
Эксперт С++
4229 / 2203 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.08.2011, 22:02
morphling, может вам пригодится:
programm

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
void Print(char *a, int n)
{
   int i;
   for (i = n - 1; i >= 0 ; i--)
      printf("%d", a[i]);
   printf("\n");
}
 
void ToArray(unsigned long x, char *a, int *n)
{
   int i = 0;
   do
   {
      a[i++] = x & 1;
      x >>= 1;
   }
   while(x);
   *n = i;
}
 
void Sum(char *a, int *alen, char *b, int blen)
{
   char ost, buf;
   int i;
   i = ost = 0;
   while (i < *alen && i < blen)
   {
 
       buf = (a[i] + b[i] + ost) >> 1;
       a[i] = (a[i] + b[i] + ost) & 1;
       ost = buf;
       i++;
   }
   while (i < *alen)
   {
      buf = (a[i] + ost) >> 1;
      a[i] = (a[i] + ost) & 1;
      ost = buf;
      i++;
   }
   while (i < blen)
   {
      buf = (b[i] + ost) >> 1;
      a[i] = (b[i] + ost) & 1;
      ost = buf;
      i++;
   }
   if (ost)
      a[i++] = ost;
   *alen = i;
}
 
int main()
{
   unsigned long x = 123, y = 321;
   int alen = 0, blen = 0;
   char a[100], b[100];
   ToArray(x, a, &alen);
   ToArray(y, b, &blen);
   Sum(a, &alen, b, blen);
   Print(a, alen);
   return 0;
}


Добавлено через 2 минуты
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Просто складывай. Создавай массив. Знаком с битовыми операциями?
C++
1
2
3
4
5
6
7
8
i=0;
while (c)
{
 if (c&1) mas[i]=1;
 else mas[i]=0;
 i++;
 c>>=1;
}
Теперь полученный массив выводим в обратном порядке. Вот и всё.
Можно проще написать (без if)
C++
1
mas[i] = c&1;
И в вашем цикле не учтено что c может быть 0, поэтому цикл do-while нужен
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.