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

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

22.03.2011, 18:48. Показов 17223. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru