
Сообщение от
kondor3000
На ПР у вас ничего не выйдет, он не умеет работать с 64 битными переменными, всё что вы можете прочитать 4 регистра
Я бы решал задачу вывода 64 разрядного числа на экран методами длинной арифметики. На ST это совсем не составит труда.
Пусть имеется 4 регистра по 16 разрядов. Их можно для упрощения перенести в 4 32 разрядных - повысив ёмкость.
Далее, алгоритм вывода числа на экран на псевдокоде
Код:
uint x=123456;
char digits[30]; //или сколько разрядов будет занимать число
uint count=0;
do
{
digits[count++] = (x % 10); //остаток от деления на 10
x = x / 10; //целочисленное деление на 10;
}while(x>0);
//теперь в массиве digits цифры выводимого числа в обратном порядке
//вывод массива
for(int i=count; i>0; i--)
putchar(digits[i-1]);
Для длинной арифметики делить можно вычитанием или имитацией деления в столбик - как раз и пригодится свойство превышения разрядности переменных над разрядностью реального содержимого.
Можно и деление на 10 заменить делением на 10^5, что ускорит получение групп цифр для вывода, а последний остаток - выводить отдельно вместе с элементом текст, содержащим символ "точка". Выводить со значащими нулями.
Т.е. вместо одного числа будет выведено 5 при помощи 6 элементов (5 вывод int, 1 вывод text).
Может я чуть сумбурно описал, но алгоритмы длинной арифметики часто используются.
2 в 64 степени = 18 446 744 073 709 551 616, т.е. всего 20 цифр.