C#
Программа для сложения, вычитания, умножения и деления чисел в двоичной, восьмеричной, шестнадцатеричной системах
Помогите написать программу для сложения, вычитания, умножения и деления чисел в двоичной, восьмеричной, шестнадцатеричной системах. Необязательно все системы счисления, но хотя бы все операции в одной системе, чтобы я мог понять принцип. И нужно написать именно алгоритм действий, без перевода в другие системы. Желательно на С#
Принцип тот же самый, как в сложении столбиком в десятичной системе. Отличие разных систем счисления только в том, какая цифра является максимальной.
Например, если мы сложили цифры 5 и 4, то в десятичной системе не будет переноса, поскольку 9 < 10. При сложении этих же чисел в восьмеричной системе будет перенос единицы в следующий разряд, поскольку неверно, что 9 < 8. В восьмеричной системе получается 11. Младший разряд вычисляется так: 9 - 8.
Например, если мы сложили цифры 5 и 4, то в десятичной системе не будет переноса, поскольку 9 < 10. При сложении этих же чисел в восьмеричной системе будет перенос единицы в следующий разряд, поскольку неверно, что 9 < 8. В восьмеричной системе получается 11. Младший разряд вычисляется так: 9 - 8.
Одил Бой
я это понимаю, но не могу корректно реализовать сдвиг разряда
Калькулятор Windows может это делать, переключи в режим "программист".
Берешь 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
Точно также с вычитанием. Точно также с любыми СС, главное следить тем чтобы разряды переносились корректно взависимости от размера системы счисления. Деление и умножение посложнее, так как алгоритм математического вычисления сложнее но в точности делаешь аналог столбика
0010
0200
0210 // Отзеркалив массив получаем 0120 =>120
Точно также с вычитанием. Точно также с любыми СС, главное следить тем чтобы разряды переносились корректно взависимости от размера системы счисления. Деление и умножение посложнее, так как алгоритм математического вычисления сложнее но в точности делаешь аналог столбика
Одил Бой
спасибо за Ваш ответ. Завтра попробую
Похожие вопросы
- C#: Умножения чисел(чисел в строках) больших Int64 MaxValue без использования System.Numerics и BigInteger
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом
- Найти два неотрицательных вещественных числа a и b, такие что a+b=d и a⋅b=d.
- Написать класс в котором генерируется исключение при делении элементов одного массива на другой размеры которых различны
- Как сделать программу на C#?
- C#. Как сгенерировать случайное число в диапозоне, исключающее одно число. C#
- Программирование на C# - целые числа
- Очень прошу помощи в написании программы на си шарп :)
- Помогите исправить сложную программу на C#
- Написание программы на языке программирования C#