Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программа для сложения, вычитания, умножения и деления чисел в двоичной, восьмеричной, шестнадцатеричной системах

Кот Знаток (451), закрыт 4 года назад
Помогите написать программу для сложения, вычитания, умножения и деления чисел в двоичной, восьмеричной, шестнадцатеричной системах. Необязательно все системы счисления, но хотя бы все операции в одной системе, чтобы я мог понять принцип. И нужно написать именно алгоритм действий, без перевода в другие системы. Желательно на С#
Лучший ответ
Дед Мазай Гений (58129) 4 года назад
Принцип тот же самый, как в сложении столбиком в десятичной системе. Отличие разных систем счисления только в том, какая цифра является максимальной.
Например, если мы сложили цифры 5 и 4, то в десятичной системе не будет переноса, поскольку 9 < 10. При сложении этих же чисел в восьмеричной системе будет перенос единицы в следующий разряд, поскольку неверно, что 9 < 8. В восьмеричной системе получается 11. Младший разряд вычисляется так: 9 - 8.
КотЗнаток (451) 4 года назад
я это понимаю, но не могу корректно реализовать сдвиг разряда
Дед Мазай Гений (58129) Кот, Ты имеешь в виду умножение? Поскольку у тебя числа будут храниться как строка символов, то сдвиг можно реализовать добавлением нуля. Или можно учитывать сдвиг при сложении, а не делать его фактически (как преобразование числа).
Остальные ответы
Лайт Ягами Искусственный Интеллект (337915) 4 года назад
Калькулятор Windows может это делать, переключи в режим "программист".
An1Byte Мудрец (10871) 4 года назад
Берешь 2 массива и фигачишь... каждая ячейка массива это своего рода разряд числа... например начни с простых чисел... к примеру 100 и 20. получаем 2 массива с 4мя элементами каждый (для чисел не бельших 4 разрядов чисто для удобства объяснений). получается первый массив (0 1 0 и 0) и второй 0 0 2 и 0... Кстати в массиве их удобнее будет представлять в зеркальном виде... то есть так 0 0 1 0 и 0 2 0 0. Главное иметь ввиду что занимаешь ты или переносишь ты теперь не влево а вправо.... Получаем что бы сложить число или что то еще то вспоминаем алгоритм вычисления в столбик.
0010
0200
0210 // Отзеркалив массив получаем 0120 =>120
Точно также с вычитанием. Точно также с любыми СС, главное следить тем чтобы разряды переносились корректно взависимости от размера системы счисления. Деление и умножение посложнее, так как алгоритм математического вычисления сложнее но в точности делаешь аналог столбика
КотЗнаток (451) 4 года назад
спасибо за Ваш ответ. Завтра попробую
Похожие вопросы