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

Арифметические операции с двоичными числами - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.66
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 18:48     Арифметические операции с двоичными числами #1
Вопрос такой.
Вот задание:
Двоичные числа (разбор строки, формирование строки, операции сложения, вычитания, разные варианты вывода строки).
1. Создать программный класс (или несколько связанных классов) на языке С++, которые реализуют заданные алгоритмы / функции (по вариантам). В классах реализовать конструкторы (деструкторы), инкапсуляцию (сокрытие закрытых атрибутов через методы доступа), по возможности – открытые и закрытые методы обработки, перегрузку операторов, реализовать абстрактный класс на базе обычного, выделить интерфейс и др.


Может ли кто то мне помочь понять, что же я должен сделать. Вплане двоичных чисел.
Это двоичный калькулятор или что?
Что такое разбор строки.
Кто будет классом и где инкапсуляция?

Совсем чайник. Помогите пожалуйста. Код не надо, а именно концептууально, алгоритмически на примере.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 18:48     Арифметические операции с двоичными числами
Посмотрите здесь:

Написать программу, которая демонстрирует выполнение операций с 12-разрядными двоичными числами C++
15. Создать класс LongLong для работы с целыми числами. Число должно быть представлено двумя полями.Реализовать арифметические операции C++
C++ Арифметичиские операции над двоичными числами
Побитовые операции с двоичными цифрами C++
C++ Провести операцию эквивалентности над двоичными числами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.03.2011, 19:52     Арифметические операции с двоичными числами #2
Двоичные или двоично-десятичные числа?
Задано ли ограничение на длину числа?
Сложение вычитание реализовать достаточно просто. Умножение и деление намного сложнее.
Задача не однозначна. Либо это просто числа в строке вида "100101101", либо очень большие числа, превышающие размер регистра.
В первом случае почитай про то, как происходит сложение целых чисел. Реализация тривиальна.
Во втором - тоже гугли. Но будет оч сложно.
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 20:06  [ТС]     Арифметические операции с двоичными числами #3
По простому варианту.
Я понимаю сложение и вычитание я не понимаю что надо делать.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.03.2011, 20:09     Арифметические операции с двоичными числами #4
Для сложения:
1. Создать строку на один символ больше, чем самая длинная из двух складываемых строк;
2. Справа-налево читать символы в строках и суммировать.
3. Не забывать про перенос единицы.
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 20:18  [ТС]     Арифметические операции с двоичными числами #5
Вот это что такое:
1. Создать программный класс (или несколько связанных классов) на языке С++, которые реализуют заданные алгоритмы / функции (по вариантам). В классах реализовать конструкторы (деструкторы), инкапсуляцию (сокрытие закрытых атрибутов через методы доступа), по возможности – открытые и закрытые методы обработки, перегрузку операторов, реализовать абстрактный класс на базе обычного, выделить интерфейс и др.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.03.2011, 20:27     Арифметические операции с двоичными числами #6
C++
1
2
3
4
5
6
7
8
9
10
class BNum // Класс
{
public:
    BNum();// Конструктор
    ~BNum(); // ДЕструктор
 
    BNum & operator + ( const BNum &); // открытый метод
private://инкапсуляция как-бы
    std::string _str;//атрибут
};
Как бы, почитайте про основы ООП.)
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 21:10  [ТС]     Арифметические операции с двоичными числами #7
Я читал основы ООП. Я не могу понять как тот же пример сложения двоичных чисел с этим связать.
prZzZ
Программист
 Аватар для prZzZ
108 / 88 / 5
Регистрация: 22.03.2011
Сообщений: 232
23.03.2011, 10:31     Арифметические операции с двоичными числами #8
Возьми, для примера, класс комплексных чисел из stl и разбери его.
Там есть всё: и инкапсуляция и перегрузка и шаблоны...
По его подобию и разработай свой класс...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.03.2011, 11:02     Арифметические операции с двоичными числами #9
Цитата Сообщение от prZzZ Посмотреть сообщение
Возьми, для примера, класс комплексных чисел из stl и разбери его...
Да вы, батенька, садист.)
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
24.03.2011, 18:45  [ТС]     Арифметические операции с двоичными числами #10
Так что же делать?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 19:07     Арифметические операции с двоичными числами #11
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 0 (и перенос единицы в следующий разряд)
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 19:24     Арифметические операции с двоичными числами #12
А точно требуется всю эту двоичную арифметику реализовывать собственными силами? В задании четко об этом вроде не сказано.
Просто можно ввод и вывод осуществлять в виде строки, а сами значения в классе хранить в виде int или __int64 (ну опять же, если такое ограничение устраивает). И все операции выполнять с целыми числами. Ну, естественно, отслеживать регистр флагов. Так проще, мне кажется.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 19:30     Арифметические операции с двоичными числами #13
На С++ нет доступа к регистру флагов. На asm можно...
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 19:39     Арифметические операции с двоичными числами #14
Цитата Сообщение от Deviaphan Посмотреть сообщение
На С++ нет доступа к регистру флагов. На asm можно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unsigned eflags()
{
    unsigned u0 = 0xffffffff;
    unsigned u1 = 2;
    unsigned f;
    __asm
    {
        mov eax, u1
        add u0, eax
        pushfd
        pop eax
        mov f, eax
    }
    return f;
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 19:46     Арифметические операции с двоичными числами #15
Тогда уж сразу
C++
1
2
3
4
5
6
7
8
9
10
11
12
unsigned eflags()
{
    unsigned u0 = 0xffffffff;
 
    __asm
    {
        mov eax, 2
        add u0, eax
        pushfd
        pop eax
    }
}
или как-то так.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 20:04     Арифметические операции с двоичными числами #16
Ну, да. Значение в eax возвращается. Это было для наглядности
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 20:07     Арифметические операции с двоичными числами #17
Даже так, пожалуй.
C++
1
2
3
4
5
6
7
8
unsigned eflags()
{
    __asm
    {
        mov eax, 2
        add eax, 0xffffffff
    }
}
Но ведь это не решение проблемы.)

Добавлено через 44 секунды
А вобще, что там куда прибавляли, я даже не посмотрел.)))
eax не регистр флагов.)

Добавлено через 39 секунд
Какую-то ерунду вообще написали... я...
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 20:13     Арифметические операции с двоичными числами #18
C++
1
2
3
add u0, eax
pushfd   // После сложения заталкиваем в стек содержимое регистра флагов
pop eax  // Извлекаем, то что было в регистре флагов
Где ерунда?О_о
И почему не решение проблемы? Возиться с двоичной арифметикой проще? Реализовывать тот же самый регистр флагов, пусть и не в полнои объеме.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 20:16     Арифметические операции с двоичными числами #19
Я же конкретизировал, где:
Цитата Сообщение от Deviaphan Посмотреть сообщение
я...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 20:17     Арифметические операции с двоичными числами
Еще ссылки по теме:

Арифметические операции над действительными числами согласно условию C++
C++ Выполнение арифметические действи над двоичными, восьмеричными или шестнадцатеричными числами (по блок-схеме)

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

Или воспользуйтесь поиском по форуму:
bigredcat
24.03.2011, 20:17     Арифметические операции с двоичными числами
  #20

Не по теме:

Чет это уже оффтоп
Да, я понял. Я про то что в #15 у вас все правильно

Yandex
Объявления
24.03.2011, 20:17     Арифметические операции с двоичными числами
Ответ Создать тему
Опции темы

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