|
Перевод WORD в строчный WORD или INT, Функции или библиотеки |
|
|
|
 |
Ответов
|
Mar 7 2017, 08:04
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(Aldec @ Mar 7 2017, 11:18)  Вроде раздел средства разработки и вопрос в общем в каком компиляторе есть функции или готовые процедуры конвертирования DWORD в int array[ ] http://cppstudio.com/post/389Вторая страница пошла (я понимаю, форуму хорошо - реклама-шрэклама…), куда катится этот мир (; http://publ.lib.ru/ARCHIVES/Z/ZLOBIN_Vladi...cessorah.(1991).[djv-fax].zip Ну и совсем по-пионэрски: CODE void BIN_TO_BCD (uint32_t* bcd) //============================================================================== // Подпрограмма преобразования 64-х разрядного двоичного (BIN) числа в // упакованный двоично-десятичный (BCD) формат. //============================================================================== #define _tetrad_mask (0x0000000Fu) #define _tetrad_lmt (0x00000004u) #define _tetrad_crrctn (0x00000003u) { uint32_t shift_rg[5] = {bcd[0], bcd[1], 0, 0, 0}, i = 0x00000040,// счетчик цикла по входному регистру t, t_l, t_c; int32_t j;// счетчик цикла по тетрадам BCD-регистра do { j = 0x0000001C; do { t = (_tetrad_mask << j); t_l = (_tetrad_lmt << j); t_c = (_tetrad_crrctn << j); if ((shift_rg[2] & t) > t_l) { shift_rg[2] = shift_rg[2] + t_c; }; if ((shift_rg[3] & t) > t_l) { shift_rg[3] = shift_rg[3] + t_c; }; if ((shift_rg[4] & t) > t_l) { shift_rg[4] = shift_rg[4] + t_c; }; j =j - 4; } while (j >= 0);
shift_rg[4] = shift_rg[4] << 1; if (shift_rg[3] & 0x80000000) { shift_rg[4] = (shift_rg[4] | 0x00000001); }; shift_rg[3] = shift_rg[3] << 1; if (shift_rg[2] & 0x80000000) { shift_rg[3] = (shift_rg[3] | 0x00000001); }; shift_rg[2] = shift_rg[2] << 1; if (shift_rg[1] & 0x80000000) { shift_rg[2] = (shift_rg[2] | 0x00000001); }; shift_rg[1] = shift_rg[1] << 1; if (shift_rg[0] & 0x80000000) { shift_rg[1] = (shift_rg[1] | 0x00000001); }; shift_rg[0] = shift_rg[0] << 1;
i = i - 1; } while (i != 0);
bcd[2] = shift_rg[2]; bcd[3] = shift_rg[3]; bcd[4] = shift_rg[4]; }
//Определили, к примеру: uint32_t BnrCdDcmls[5]; //Задали: BnrCdDcmls[0] = младшие_32_разряда; BnrCdDcmls[1] = старшие_32_разряда; //Вызвали: BIN_TO_BCD ((uint32_t*)&BnrCdDcmls); //Получили: с BnrCdDcmls[2] по BnrCdDcmls[4] тетрадами (это по 4 бита - если слово незнакомое) двоично-десятичное представление; //ну и уж дальше рассортируете. Чесслово, за время треда уже и книжку бы прочитали и первый вариант кода проверить успели бы…
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Mar 7 2017, 08:45
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Obam @ Mar 7 2017, 10:04)  //Определили, к примеру: uint32_t BnrCdDcmls[5]; Вот сразу уже и не подходит. Требовалось WORD. QUOTE (Obam @ Mar 7 2017, 10:04)  тетрадами Снова мимо - надо было int.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 7 2017, 09:19
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(Сергей Борщ @ Mar 7 2017, 12:45)  Вот сразу уже и не подходит. Требовалось WORD. Лично я остановился на WORD'97… Если закопаться в своих архивах (но я этого делать не стану  ), то найду подобное и для mcs51, а там word (машинное слово, так ведь?) вообще 8 бит… Цитата Снова мимо - надо было int.  Ни фига: именно int надо "декомпозировать"  , Причём TC, упоминая MODF, похоже считает, что int так же сложно устроен, что и float. Примем дополнение до 2-х, как формат (старший разряд знаковым) - будет int, не примем - не будет.  Ну пусть человек, хоть посмотрит-подумает, голова, она ведь не только чтоб в неё есть… а по поводу "за время треда уже и книжку бы прочитали…", я так понимаю, возражений нет (;
Сообщение отредактировал Obam - Mar 7 2017, 09:24
--------------------
Пролетарий умственного труда.
|
|
|
|
Сообщений в этой теме
Aldec Перевод WORD в строчный WORD или INT Mar 3 2017, 05:22 novikovfb в чем именно должен заключаться перевод? Что значи... Mar 3 2017, 06:16 krux покажите sizeof(word) и sizeof(int) на вашей платф... Mar 3 2017, 14:20 Aldec Под переводом в INT имеется ввиду конвертация в с... Mar 6 2017, 09:33 scifi sprintf()
А вообще задачка уровня средней школы, к... Mar 6 2017, 09:55 hsoft Цитата(Aldec @ Mar 6 2017, 09:33) Под пер... Mar 6 2017, 10:43 ViKo Керниган и Ричи в своей книжке дали пример. Mar 6 2017, 11:18 Сергей Борщ Вы не поняли - это все для слабых! Еще и книжк... Mar 6 2017, 11:31 scifi Цитата(Сергей Борщ @ Mar 6 2017, 14:31) В... Mar 6 2017, 11:52 Эдди Я не понял, что ТСу надо? Вот это что ли (аналог p... Mar 6 2017, 14:54 Aldec Нужно конвертировать четырехзначное число в массив... Mar 6 2017, 15:17 Эдди Что такое MODF? Что такое WORD? Почему нельзя сраз... Mar 6 2017, 15:57 novikovfb Цитата(Эдди @ Mar 6 2017, 19:57) Что тако... Mar 6 2017, 16:56 Grizzzly Цитата(Эдди @ Mar 6 2017, 18:57) Что тако... Mar 6 2017, 17:44 Эдди Очень круто: начал ТС с каких-то int, а в итоге fl... Mar 6 2017, 20:34 Сергей Борщ QUOTE (Aldec @ Mar 7 2017, 09:18) в каком... Mar 7 2017, 07:21  Aldec Вы имеете ввиду что в каком то x86 МК есть аппарат... Mar 8 2017, 08:11 Aldec Упоминание MODF и других функций только для намека... Mar 7 2017, 10:21 scifi Цитата(Aldec @ Mar 7 2017, 13:21) Упомина... Mar 7 2017, 10:26 Obam "Понесли кроссовки Митю...".
Не знаю в к... Mar 8 2017, 10:17 Aldec Вам покажется странным но в Си, инициализация масс... Mar 8 2017, 12:50 Obam Цитата(Aldec @ Mar 8 2017, 16:50) Вам пок... Mar 8 2017, 14:36 Сергей Борщ QUOTE (Aldec @ Mar 8 2017, 14:50) т.е. о... Mar 8 2017, 14:58 Aldec Да раздел про МК а также "How-to, тонкости р... Mar 8 2017, 19:38 SSerge Цитата(Aldec @ Mar 9 2017, 02:38) ...
во... Mar 9 2017, 06:50 Aldec Там не совсем ясно какой конвертер круче, на деле... Mar 20 2017, 11:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|