Неважно, что такое система счисления, десятичная, двоичная, восьмеричная.Скажем, у меня есть десятичное значение 123 на десятичном компьютере, мне все равно нужно преобразовать это значение в три символа, чтобы отобразить их.Примем формат ASCII.Глядя на таблицу ASCII, мы знаем ответ, который ищем, 0x31,0x32,0x33.
Если вы разделите 123 на 10, используя целочисленную математику, вы получите 12. Умножьте 12 * 10, вы получите 120, разница3, ваша младшая цифра.мы возвращаемся к 12 и делим это на 10, давая 1, 1, 10 - это 10, 12-10 - это наша следующая цифра.мы берем 1, которое осталось делить на 10, и получаем ноль, который мы знаем, что мы закончили.цифры, которые мы нашли в порядке: 3, 2, 1. измените порядок на 1, 2, 3. Добавьте или ИЛИ 0x30 к каждой, чтобы преобразовать их из целых в ascii.
измените это, чтобы использовать переменную вместо123 и использовать любую систему нумерации, которая вам нравится, при условии, что в ней достаточно цифр для выполнения такой работы
Вы можете пойти и другим путем, разделив на 100 ... 000, какой бы ни был самый большой десятичный знак, который вы можете сохранитьили намерены найти и проложить себе путь вниз.В этом случае первое ненулевое значение имеет деление на 100, что дает 1. сохранить 1. 1 раз 100 = 100, 123-100 = 23. Теперь разделить на 10, это дает 2, сохранить 2, 2 раза 10равно 20. 23 - 20 = 3. когда вы делите на 1, вы сохраняете это значение в виде своей цифры.
здесь еще одно значение, которое нужно преобразовать в часы, минуты и секунды., вы можете разделить на 60, сохранить результат a, вычесть исходное число - (a * 60), оставив остаток в секундах, сохраните его.теперь возьмите a и разделите на 60, сохраните это как b, это ваше количество часов.вычтите a - (b * 60) это остаток, который составляет минуты, кроме этого.сделано часов, минут секунд.затем вы можете поделить часы на 24, чтобы получить дни, если хотите, и дни, а затем на 7, если хотите недели.
Был выдвинут комментарий об инструкциях по разделению.Деления очень дороги, и у большинства процессоров их нет.Дорого в том, что разделить, в течение одного часа, стоит вам ворота и власть.Если вы делите много часов, вы можете просто разделить программное обеспечение и сохранить ворота.По той же причине большинство процессоров не имеют процессора, вентилей и питания.(ворота означают более крупные чипы, более дорогие чипсы, более низкий доход и т. д.).Это не случай современного или старого или 64-битного или 8-битного или чего-то подобного, это компромисс между разработкой и бизнесом.например, у 8088/86 есть деление с остатком (также есть добавление bcd).Ворота / размер, если они используются, могут быть лучше поданы, чем для одной инструкции.Умножение попадает в эту категорию, не так плохо, но может быть.Если размеры операндов не сделаны правильно, вы можете сделать любую инструкцию (семейство) не такой полезной для программиста.В связи с этим возникает еще один момент: я не могу сейчас найти ссылку, но способ избежать деления, но преобразовать число в строку десятичных цифр, состоит в том, что вы можете умножить на .1, используя фиксированную точку.Я также не могу найти цитату о том, что настоящим программистам не нужна плавающая точка, связанная с отслеживанием десятичной точки самостоятельно.Это скользящее правило против калькулятора.Я считаю, что ссылка на статью о делении на 10 с помощью умножения где-то переполнена стеком.