Конвертация чисел из любой системы исчисления в любую другую.


#106

сам себя за бань, ты случаем не параноик ??? мерещится тебе все…

я знаю этот человек всегда дает примеры достойные внимания, вот и попросил его, потому как на C# все просто, а на С++17(а не 11) не могу понять как это делается.

Сами разработчики С# рекомендуют использовать Task из (System.Threading.Tasks;)
в силу многоядерных процессоров…

std::thread - это уже прошлый век.

Все задачи сложные, от слова сложить, смысл упорядочить. А, как ты это понимаешь одному тебе известно. Не известно - сложно, Известно - полегче.

Было бы тебе легко ты бы ответил конкретно на Task, а не стал бы тут лепить кренделя из библиотек про которые я не спрашивал.


#107

благодарю за варианты. не серчай…))


#108

Или память уж подводит, или же была какая-то (математическая?) хитрость арифметических действий между числами с разными основаниями БЕЗ приведения к общему основанию? Учитывая, что всё сводится фактически к позиционным многочленам, можно ли упростить допустим через дельту - разность оснований?

Например, 123(5) + 678(9) = ??? (12); БЕЗ перевода каждого значения к промежуточному десятичному


#109

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


#110

Суть вопроса в том, чтоб выделить порцию исчисления в исходном числе. Вам все равно сложение придется делать в какой то одной системе исчисления. А, под каждую систему счисления писать арифметическую библиотеку это встреча с бесконечностью…)) По этому нужна промежуточная система, можно к примеру 256-и ричную систему использовать, ячейки памяти как раз ее хранят(по 8 бит). Или одна ричную когда будут квантовые компьютеры…))) со скоростью … бесконечность…))) Хотя наверняка где то в бесконечности затаилась универсальная формула, а может кому то уже известна.


#111

Например, как указано в примере выше:

123(5) + 678(9) = ??? (12)

ответ нужен в 12-ричной системе, хотя по умолчанию (без скобок) можно считать десятеричную. Однако желательно исключить конверсию каждого числа через десятичное.

В принципе, если оптимизировать, оформить как класс для арифметических действий и действительных (вещественных, real), получится довольно интересно


#112

По-моему, тут интерес чисто академический. Практической пользы я от этого не вижу. Может, подскажете?


#113

Как и написал ваше – мне интересно, а практика покажет)

офф

@Алекс, а вы точно уверенны, что не видите практической пользы в цифрах? Вопрос, конечно, полуриторический, а суть в том, что, как и многое внешнее, основания/система исчисления - это всего лишь трактовка, условность. Например, почему разные алфавиты и раличное количество? зачем учить другие языки (включая ЯП)? почему вавилоняне считали в 60-ричной, что до сих пор отражается в секундах и минутах? почему 12 часов? откуда высокосный год, если считаю по семь дней в неделе? как так, что компьютер различает два состояния (бинарная), а выводят и считают именно в десятичной? почему именно так и кто это решил? зачем троичная/OCT/HEX? да и вообще зачем что-то знать и учиться?

Дело даже не столько в “матрицах”, шаблонах, межпредметных связях и кругозоре, а что когда человек видит суть, а не форму, он лучше понимает природу вещей, включая зависимости–и может играть (SEND+MORE=MONEY или тот же LEWIS СARROLL)и творить, фактически предсказывая будущее. Я считаю*, что для реального прогресса нам катастрофически не хватает именно таких людей с _не_заскриптованным инженерным мышлением


#114

Похоже, мы несколько о разном. Я вовсе не имел в виду, что не вижу пользы в переходе от одной системы счисления к другой. Речь шла об осуществлении операций над числами, представленными в системах счисления с разным основанием без перевода их к некоторому единому основанию. Как часто нам нужны подобные операции, чтобы мучить себя идеей получить какой-то выигрыш от подобных операций? Т.е. был вопрос о практической пользе. Т.е. чтобы не уподобляться пресловутому коту, который известно чем занимается, когда заняться больше нечем )))


#115

А меня ещё кое что интересует. Где граница того что считается переводом в другую систему счисления, а что нет? И реально ли вообще что то сделать с числами, не переходя эту границу?

Допустим можно разложить каждое число на цифры в его родной системе счисления. Хорошо, значит складываем последние цифры. 3(5) + 8(9). Но стоп, если считать их через integer - мы переводим всё в двоичную систему счисления! А что делать, считать как на пальцах? 3,8 => 4,7 => … => B(12), 0?

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