Перейти к содержанию
    

Перекодировка

:help:

ПОМОГИТЕ!

Как из 32 разрядного (двоичного) числа сделать массив (или структуру) из 6 10-ти разрядных чисел

Вопрос не очень понятно написан, поясню: нужно вывести число на 6 семисегментных индикаторов

в десятичном коде.

ПАСИБО!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2^32 = 4294967296 - т.е. нужно 10 семисегментных индикаторов, для отображения этого числа в десятичной форме, или 8 - в шестнадцатеричной. Шести будет явно маловато.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делением. Делишь вначале на 1000000000, получаешь старшую цифру, затем остаток делишь на 100000000, получаешь вторую цифру, ... затем делишь на 10, получаешь число десятков, в остатке останется число единиц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хинт: деление разумно заменить вычитанием, т.к. в данном случае оно будет выполняться не более 10 раз на каждую цифру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этом уже несколько раз обсуждплось, название темы не помню попробуйте поискать ...

Просто необходимо сделать преобразование числа в строку - это функция sprintf(...), но лучше для экономии кода писать свою свою функцию, которая делает такое преобразование.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для maks:из 32 разрядов мне нужно только 20.

Для SiMM: пасибо, так просто, а я у уж думал что ничего не выйдет.

Для vet: поясни пожалуйста, я не очень понял с вычитанием.

BVU:я все сделал

ВСЕМ ПАСИБО!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если еще надо, то вот кусок кодя который я пользую

 

 

void HEX_to_DEC (u32 in, u08 * out, u08 size)

{

u08 i;

for (i=0;i<size;i++) out=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

Там рассматривался алгоритм преобразования двоичного числа в двоичнодесятичный формат. А далее вывод потетрадно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...