Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/82: Рейтинг темы: голосов - 82, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281

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

22.03.2011, 18:48. Показов 17269. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос такой.
Вот задание:
Двоичные числа (разбор строки, формирование строки, операции сложения, вычитания, разные варианты вывода строки).
1. Создать программный класс (или несколько связанных классов) на языке С++, которые реализуют заданные алгоритмы / функции (по вариантам). В классах реализовать конструкторы (деструкторы), инкапсуляцию (сокрытие закрытых атрибутов через методы доступа), по возможности – открытые и закрытые методы обработки, перегрузку операторов, реализовать абстрактный класс на базе обычного, выделить интерфейс и др.


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

Совсем чайник. Помогите пожалуйста. Код не надо, а именно концептууально, алгоритмически на примере.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2011, 18:48
Ответы с готовыми решениями:

Выполнение арифметические действи над двоичными, восьмеричными или шестнадцатеричными числами (по блок-схеме)
Написать программу, позволяющую выполнять арифметические действия над двоичными, восьмеричными или шестнадцатеричными числами. Систему...

Арифметичиские операции над двоичными числами
Всем привет)) хочу показать то, что у меня вышло по данному вопросу. А вопрос был таким (сам себе его поставил): сделать арифметичиские...

Реализовать арифметические операции с комплексными числами
Создайте структуру, описывающую комплексное число. Реализуйте арифметические операции с комплексными числами: сумму, разность, умножение,...

34
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.03.2011, 19:52
Двоичные или двоично-десятичные числа?
Задано ли ограничение на длину числа?
Сложение вычитание реализовать достаточно просто. Умножение и деление намного сложнее.
Задача не однозначна. Либо это просто числа в строке вида "100101101", либо очень большие числа, превышающие размер регистра.
В первом случае почитай про то, как происходит сложение целых чисел. Реализация тривиальна.
Во втором - тоже гугли. Но будет оч сложно.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 20:06  [ТС]
По простому варианту.
Я понимаю сложение и вычитание я не понимаю что надо делать.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.03.2011, 20:09
Для сложения:
1. Создать строку на один символ больше, чем самая длинная из двух складываемых строк;
2. Справа-налево читать символы в строках и суммировать.
3. Не забывать про перенос единицы.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 20:18  [ТС]
Вот это что такое:
1. Создать программный класс (или несколько связанных классов) на языке С++, которые реализуют заданные алгоритмы / функции (по вариантам). В классах реализовать конструкторы (деструкторы), инкапсуляцию (сокрытие закрытых атрибутов через методы доступа), по возможности – открытые и закрытые методы обработки, перегрузку операторов, реализовать абстрактный класс на базе обычного, выделить интерфейс и др.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
22.03.2011, 20:27
C++
1
2
3
4
5
6
7
8
9
10
class BNum // Класс
{
public:
    BNum();// Конструктор
    ~BNum(); // ДЕструктор
 
    BNum & operator + ( const BNum &); // открытый метод
private://инкапсуляция как-бы
    std::string _str;//атрибут
};
Как бы, почитайте про основы ООП.)
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
22.03.2011, 21:10  [ТС]
Я читал основы ООП. Я не могу понять как тот же пример сложения двоичных чисел с этим связать.
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
23.03.2011, 10:31
Возьми, для примера, класс комплексных чисел из stl и разбери его.
Там есть всё: и инкапсуляция и перегрузка и шаблоны...
По его подобию и разработай свой класс...
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.03.2011, 11:02
Цитата Сообщение от prZzZ Посмотреть сообщение
Возьми, для примера, класс комплексных чисел из stl и разбери его...
Да вы, батенька, садист.)
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
24.03.2011, 18:45  [ТС]
Так что же делать?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 19:07
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 0 (и перенос единицы в следующий разряд)
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 19:24
А точно требуется всю эту двоичную арифметику реализовывать собственными силами? В задании четко об этом вроде не сказано.
Просто можно ввод и вывод осуществлять в виде строки, а сами значения в классе хранить в виде int или __int64 (ну опять же, если такое ограничение устраивает). И все операции выполнять с целыми числами. Ну, естественно, отслеживать регистр флагов. Так проще, мне кажется.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 19:30
На С++ нет доступа к регистру флагов. На asm можно...
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 19:39
Цитата Сообщение от 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;
}
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 19:46
Тогда уж сразу
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
    }
}
или как-то так.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 20:04
Ну, да. Значение в eax возвращается. Это было для наглядности
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 20:07
Даже так, пожалуй.
C++
1
2
3
4
5
6
7
8
unsigned eflags()
{
    __asm
    {
        mov eax, 2
        add eax, 0xffffffff
    }
}
Но ведь это не решение проблемы.)

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

Добавлено через 39 секунд
Какую-то ерунду вообще написали... я...
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 20:13
C++
1
2
3
add u0, eax
pushfd   // После сложения заталкиваем в стек содержимое регистра флагов
pop eax  // Извлекаем, то что было в регистре флагов
Где ерунда?О_о
И почему не решение проблемы? Возиться с двоичной арифметикой проще? Реализовывать тот же самый регистр флагов, пусть и не в полнои объеме.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 20:16
Я же конкретизировал, где:
Цитата Сообщение от Deviaphan Посмотреть сообщение
я...
0
24.03.2011, 20:17

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2011, 20:17
Помогаю со студенческими работами здесь

Длинная арифметика: арифметические операции над числами
Срочно нужны исходники (функции): 1. Перевод обычного числа в длинное (массив, строка , вектор кто с чем работает) 2. Нахождение суммы...

Арифметические операции над действительными числами согласно условию
Даны действительные числа x и y. Если оба числа положительны и ни одно из них не принадлежит отрезку , то оба числа разделить на 2, иначе...

С помощью операторов выбора реализовать арифметические операции над двумя числами
Помогите пожалуйста. Надо Вести с клавиатуры 2 числа с помощью операторов выбора реализовать арифметические операции над этими числами. ...

Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами
Написать программу, реализующую арифметические операции (сложение, вычитание, умножение, деление), над комплексными числами. Использовать...

15. Создать класс LongLong для работы с целыми числами. Число должно быть представлено двумя полями.Реализовать арифметические операции
Добрый вечер,вот задание: Создать класс LongLong для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru