TOG 0 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Товарищи, нужно 32-х разрядное число перевести в строку. А в AVR даже команды деления нету ;) Как быть-то ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
soshnev 0 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Товарищи, нужно 32-х разрядное число перевести в строку. А в AVR даже команды деления нету ;) Как быть-то ? A написать свой алгоритм можно? Нужен цикл, сдвиг и сложение... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 6 ноября, 2007 Опубликовано 6 ноября, 2007 (изменено) · Жалоба нужно 32-х разрядное число перевести в строку. А в AVR даже команды деления нету itoa() itoa() Изменено 6 ноября, 2007 пользователем blackfin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 130 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Как быть-то ?Поищите в разделе OffTopic тему, отделенную от сравнения 51 и AVR. На ней вчера-позавчера приводилось несколько вариантов. Возможно, там было не 32 бита, но поняв идею вы сможете переделать как вам надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fk0 0 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Товарищи, нужно 32-х разрядное число перевести в строку. А в AVR даже команды деления нету ;) Как быть-то ? Умножением. Умножаешь на 2 в цикле 32 раза (сдвигами). Левый разряд, попадающий в флаг переноса, переносишь в младший разряд двоично-десятичного числа (изначально обнулённого), 10-разрядного (нужно 5 байт для представления). Да, перед сдвигом двоичного числа, двоично-десятичное тоже нужно сдвинуть на один разряд влево. Это оптимальный алгоритм для CPU без команды деления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Спасибо Kirill Frolov ! Прямо в тему ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 130 6 ноября, 2007 Опубликовано 6 ноября, 2007 · Жалоба Умножаешь на 2 в цикле 32 раза (сдвигами). Левый разряд, попадающий в флаг переноса, переносишь в младший разряд двоично-десятичного числа (изначально обнулённого), 10-разрядного (нужно 5 байт для представления).Таким образом скопируем 10 разрядов исходного числа в результат. Что-то пропущено в середине ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться