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

Как додать два числа на битовом уровне С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 00:14     Как додать два числа на битовом уровне С++ #1
Помогите срочно надо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 00:21     Как додать два числа на битовом уровне С++ #2
M@k7, сформулируйте задание по-русски.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.10.2011, 00:23     Как додать два числа на битовом уровне С++ #3
C++
1
a | b
побитовое сложение
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 00:32  [ТС]     Как додать два числа на битовом уровне С++ #4
Ну есть 2 числа надо их сумировать не просто а+б а на бинарном уровне
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.10.2011, 00:35     Как додать два числа на битовом уровне С++ #5
Цитата Сообщение от M@k7 Посмотреть сообщение
Ну есть 2 числа надо их сумировать не просто а+б а на бинарном уровне
я вам уже написал как сложить a и b побитово, что еще вам надо?
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 00:52  [ТС]     Как додать два числа на битовом уровне С++ #6
так я ето не вам Jupiter, а silent_1991

Добавлено через 15 минут
Чьот оно не работает 229+110=339 а оно мне 239
чьо не так
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 00:56     Как додать два числа на битовом уровне С++ #7
M@k7, побитовое сложение - сложение каждой пары битов чисел. 229 в двоичном виде - 11100101, 110 - 1101110, теперь, сложив каждую пару битов (по правилам 0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 1),, получим 11101111, что и будет в десятичной системе равно 239.
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 00:58  [ТС]     Как додать два числа на битовом уровне С++ #8
Я ето понимаю но нужно получить 339
silent_1991
24.10.2011, 00:59
  #9

Не по теме:

M@k7, используй +, Люк.

M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 01:00  [ТС]     Как додать два числа на битовом уровне С++ #10
Очень прошу напишите пример
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 01:01     Как додать два числа на битовом уровне С++ #11
M@k7,
C++
1
int c = a + b;
two steps
24.10.2011, 01:03
  #12

Не по теме:

Скажите своему преподавателю, что слово "додать" не применимо к числам, пусть перефразиует мысль

M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 01:07  [ТС]     Как додать два числа на битовом уровне С++ #13
Ну сказано мне сумировать при помощи двоичной системы
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2011, 01:09     Как додать два числа на битовом уровне С++ #14
M@k7, в памяти компьютера и так всё представлено в двоичной системе. Зачем делать одну и ту же работу дважды?
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 01:12  [ТС]     Как додать два числа на битовом уровне С++ #15
Если б я знал

Добавлено через 3 минуты
Но всёже напишите как ето сделать
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
24.10.2011, 02:08     Как додать два числа на битовом уровне С++ #16
Цитата Сообщение от silent_1991 Посмотреть сообщение
M@k7, побитовое сложение - сложение каждой пары битов чисел. 229 в двоичном виде - 11100101, 110 - 1101110, теперь, сложив каждую пару битов (по правилам 0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 1),, получим 11101111, что и будет в десятичной системе равно 239.
11100101 + 1101110 = 101010011 = 339

Добавлено через 30 минут

Не по теме:

автор программы не я. код рабочий. протестировал. добавьте проверку чтобы нельзя было ввести ничего кроме 0 и 1 и будет вам счастье



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
#include "stdafx.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
 
int str2int(char* str) {
  int rezult=0;
  while(*str) {
      rezult=rezult*2+(*str++-'0');
  }
  //cout << rezult << endl;
  return rezult;
}
 
int main()
{
    char number_one[33],number_two[33],sum[33];
    cout << "enter first binary number" << endl;
    cin >> number_one;
    cout << "enter second binary number" << endl;
    cin >> number_two;
 
    cout << str2int(number_one) << " + "<< str2int(number_two) << " = "<< str2int(number_one)+str2int(number_two) << endl;
 
 
    printf("%032s\n+\n%032s\n=\n%032s\n", 
        number_one, number_two,itoa(str2int(number_one)+str2int(number_two),sum,2)
        );
 
system("pause");
return 0;
}
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 02:13  [ТС]     Как додать два числа на битовом уровне С++ #17
спасиба
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
24.10.2011, 02:16     Как додать два числа на битовом уровне С++ #18
Цитата Сообщение от M@k7 Посмотреть сообщение
А можете написать как у вас это вышло
может проще начать с того момента что именно в коде вам непонятно? А как оно вышло я уже написал. все в коде.
M@k7
 Аватар для M@k7
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 165
24.10.2011, 02:17  [ТС]     Как додать два числа на битовом уровне С++ #19
но вводить мне то какраз нужно цыфры в десятеричной системе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 04:19     Как додать два числа на битовом уровне С++
Еще ссылки по теме:

C++ Как сложить побитно два числа в двоичной с/с
C++ Сравните два числа A и B. Задан два целых неотрицательных числа A и B
C++ Как увеличить число на битовом уровне?

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

Или воспользуйтесь поиском по форуму:
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
24.10.2011, 04:19     Как додать два числа на битовом уровне С++ #20
Цитата Сообщение от M@k7 Посмотреть сообщение
но вводить мне то какраз нужно цыфры в десятеричной системе
вот навоял вам сложение как вам надо. вводите целые положительные числа по основанию 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
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "stdafx.h"
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
 
#include <sstream>
using std::stringstream;
 
 
//записываем десятичное число в двоичном виде
void int2str(char  str[], const int * size ,int * num){
    int i = *size-1;
    while(*num/2 > 0){
        str[i] = *num -((*num/2)*2)+'0'; 
        *num = *num/2;
        i--;
    }
    str[i] = *num + '0';
}
 
 
//складываем по битам
void sum(const char num1[], const char num2[], char res[], const int *size){
    int i = *size -1;
    int add = 0;
    while(i >=0){
        if(num1[i] == '0' && num2[i] == '0') {
            if(add == 1){
                res[i] = 1 + '0';
                add = 0;
            } else{
                res[i] = 0 + '0';
            }
        } else if (num1[i] == '0' && num2[i] == '1' || num1[i] == '1' && num2[i] == '0'){
            if(add == 1){
                res[i] = 0 + '0';
                add = 1;
            } else {
                res[i] = 1 + '0';
            }
        } else if(num1[i] == '1' && num2[i] == '1') {
            if(add == 1){
                res[i] = 1 + '0';
            } else {
                res[i] = 0 + '0';
                add = 1;
            }
        }
        i-=1;
    }
 
}
 
int main(){
    const int size = 32;
    char num1[size] = {};
    char num2[size] = {};
    char res[size] = {};
    int num;
 
    //забиваем все нулями
    for(int i = 0; i < size; ++i){
        num1[i] = '0';
        num2[i] = '0';
        res[i] = '0';
    }
 
    cout << "Enter first number" << endl;
    cin >> num;
    int2str(num1, &size, & num);
 
    cout << "Enter second number" << endl;
    cin >> num;
    int2str(num2, &size, & num);
 
    sum(num1, num2, res, &size);
 
    for(int i = 0; i < size; ++i){
        cout << res[i];
    }
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 3 минуты
изменяйте значение const int size = 32; чтобы была разрядность меньше. например при сложение 229 и 110 вы получите число длиной 9 бит. посему поставте например const int size = 16; вполне достаточно.

Не по теме:

это программа рабочая. но с точки зрения компьютера и вычислений которые он проводит она примитивна и нецелесообразна.



Добавлено через 14 минут
строки
C++
1
2
#include <sstream>
using std::stringstream;
надо удалить из кода. забыл удалить после экспериментов
Yandex
Объявления
24.10.2011, 04:19     Как додать два числа на битовом уровне С++
Ответ Создать тему
Опции темы

Текущее время: 03:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru