![]() |
![]() |
AlexSt |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() Code: |
![]() ![]() |
AlexSt |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
а какие ещё есть варианты кроме как "разделить" и "слепить"? у меня только такая идея и была...(
|
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
а какие ещё есть варианты кроме как "разделить" и "слепить"? у меня только такая идея и была...( Еще вариант - про который я говорил с самого начала. В той проге, которую ты выбрал за образец, перевод делается так: Число (А) в записанное в СС1 с основанием D1 нужно перевести в СС2 с основанием D2. Допустим, что мы уже умеем умножать числа в любой системе счисления (одинаковой, естественно, для обоих сомножителей). Переводим каждую цифру этого числа из СС1 в СС2. Теперь это уже, возможно, не цифры, а числа (например, 5 десятичное = 101 двоичное). Дальше действуем по формуле, которую я сегодня уже кому-то тут писал.. Например, исходное число a3a2a1a0 (каждое ai - цифра), то есть: A(СС1) = a3*D1^3 + a2*D1^2 + a1*D1 + a0 Мы перевели каждую цифру в другую систему ai(CC1) = ai(CC2) = ai2. Также, мы переводим основание первой системы В1 в СС2 D1(CC1) = D1(CC2) = D12 Теперь перепишем, чему равно А, но уже в СС2: A(СС2) = a32*D12^3 + a22*D12^2 + a12*D12 + a0 Осталось произвести эти умножения и сложения (теперь понял, почему они есть в той проге?) Идем дальше, хотим дроби. То есть теперь у нас число выглядит так: A = a3a2a1a0.b1b2 - тут две цифры после запятой. Переводить его надо аналогично, только с дробными цифрами будут стоять отрицательные степени основания: A(СС2) = a32*D12^3 + a22*D12^2 + a12*D12 + a0 + b12*D12^-1 + b22*D12^-2 Вот и все. Казалось бы, то же самое. Но только отрицательные степени - это деление: D12^-n = 1/(D12^n) То есть, вот так: A(СС2) = a32*D12^3 + a22*D12^2 + a12*D12 + a0 + b12/D12^1 + b22/D12^2 Так что тебе понадобится деление. Я бы на твоем месте все сделал заново, без той проги.. Ничего особо сложного, а путаницы меньше. Время есть? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 5:26 |