реклама на сайте
подробности

 
 
> Разделение числа на разряды, динамическая индикация
Abell
сообщение Dec 19 2006, 13:43
Сообщение #1


профессиональный дилетант
****

Группа: Участник
Сообщений: 866
Регистрация: 16-03-06
Из: Шебекино - Лысьва - Тюмень
Пользователь №: 15 292



Подскажите, плз, какие алгоритмы вообще существуют для разделения числа на разряды? есть задача, требуется отобразить измеренное значение на семисегментном динамическом дисплее. создал массив по количеству разрядов, в цикле делю исходное число на 10 без остатка, обратно умножаю на 10 и вычитаю из исходного. так все получается, но, может, есть более простые/быстрые пути?


--------------------
Скоро дело сказывается, да не скоро сказка делается, или тише будешь - дальше уедешь...

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex03
сообщение Jan 14 2007, 18:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Я вот так это реализовывал:
Код
uint64_t  bin2bcdU64(uint32_t n)
{
    int i;
    uint64_t ll;
    uint64_t ull = 0ULL;

    for(i=0;;i++)
    {
        ull = (ull<<1) | (n>>31);
        n <<= 1;

        if(i==31)
            break;

        ll = ( (ull>>3) | ((ull>>2) & ((ull>>1)|ull) ) ) & 0x1111111111ULL;
        ull += ll | (ll<<1);
    }
    return ull;
}

т.е. Всё 32-х разрядное число в 64-х разрядное, в котором 10 значащих двоичнодесятичных разряда.
Если диапазон входных значений меньше то легко можно упростить/ускорить сократив разрядность переменных и укоротив цикл.

ЗЫ А всётаки кое чё на АСМах красивей! smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016