Полная версия этой страницы:
Перекодировка
Алексей Б.
Apr 1 2006, 08:09

ПОМОГИТЕ!
Как из 32 разрядного (двоичного) числа сделать массив (или структуру) из 6 10-ти разрядных чисел
Вопрос не очень понятно написан, поясню: нужно вывести число на 6 семисегментных индикаторов
в десятичном коде.
ПАСИБО!
2^32 = 4294967296 - т.е. нужно 10 семисегментных индикаторов, для отображения этого числа в десятичной форме, или 8 - в шестнадцатеричной. Шести будет явно маловато.
Делением. Делишь вначале на 1000000000, получаешь старшую цифру, затем остаток делишь на 100000000, получаешь вторую цифру, ... затем делишь на 10, получаешь число десятков, в остатке останется число единиц.
Хинт: деление разумно заменить вычитанием, т.к. в данном случае оно будет выполняться не более 10 раз на каждую цифру.
Этом уже несколько раз обсуждплось, название темы не помню попробуйте поискать ...
Просто необходимо сделать преобразование числа в строку - это функция sprintf(...), но лучше для экономии кода писать свою свою функцию, которая делает такое преобразование.
Алексей Б.
Apr 4 2006, 14:53
Для maks:из 32 разрядов мне нужно только 20.
Для SiMM: пасибо, так просто, а я у уж думал что ничего не выйдет.
Для vet: поясни пожалуйста, я не очень понял с вычитанием.
BVU:я все сделал
ВСЕМ ПАСИБО!
shamray
Apr 6 2006, 13:04
Если еще надо, то вот кусок кодя который я пользую
Цитата
void HEX_to_DEC (u32 in, u08 * out, u08 size)
{
u08 i;
for (i=0;i<size;i++) out[i]=0;
switch (size)
{
case 7:
while (in>=1000000)
{
in-=1000000;
out[6]++;
};
case 6:
while (in>=100000)
{
in-=100000;
out[5]++;
};
case 5:
while (in>=10000)
{
in-=10000;
out[4]++;
};
case 4:
while (in>=1000)
{
in-=1000;
out[3]++;
};
case 3:
while (in>=100)
{
in-=100;
out[2]++;
};
case 2:
while (in>=10)
{
in-=10;
out[1]++;
};
case 1:
out[0]=in;
default: break;
}
}
in - ваше число
out - указатель на массив где хранятся 10-ичные цифры
size -количество этих цифр
http://electronix.ru/forum/index.php?showtopic=14704Там рассматривался алгоритм преобразования двоичного числа в двоичнодесятичный формат. А далее вывод потетрадно!
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.