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

 
 
> Вопрос С
badik
сообщение Jun 24 2010, 18:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 29-11-06
Из: Екатеринбург
Пользователь №: 22 890



Здравствуйте, Вопрос к людям хорошо знающим С.
Понадобилась функция перевода целого числа в строку. Перерыл спрвочник и help - результат 0.
Банальная проблема. Увы. Обраных функций вагон.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jun 25 2010, 13:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (ViKo @ Jun 25 2010, 16:43) *
Это у вас ошибка в посте №18

Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в' sad.gif попутал. Я же говорю - забывается sad.gif. Язык не прост. Не 'C' smile.gif, ну и форум не филологический, а "сишный", к счастью.
QUOTE (ViKo @ Jun 25 2010, 16:43) *
Единственное, что я вынес из разговора - надо с указателем повозиться.

А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 25 2010, 14:04
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zltigo @ Jun 25 2010, 16:56) *
Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в' sad.gif попутал. Я же говорю - забывается sad.gif . Язык не прост.

Замечу, что я вам на ваши ошибки указал без оскорбительных выражений.
Учу на собственном примере. smile.gif

Цитата(zltigo @ Jun 25 2010, 16:56) *
А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли sad.gif

О! А как... ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2010, 14:10
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (ViKo @ Jun 25 2010, 17:04) *
О! А как... ?

Ну, например, как у Genadi. И, если выбирать из двух, то тогда уж оставлять деление, а не остаток он него - много менее громоздко в подавляющем большинстве случаев.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 25 2010, 16:15
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zltigo @ Jun 25 2010, 17:10) *
Ну, например, как у Genadi.

А разве в коде Genadi видно, как у него реализована функция ldiv?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jun 25 2010, 20:33
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(ViKo @ Jun 25 2010, 20:15) *
А разве в коде Genadi видно, как у него реализована функция ldiv?

А какая разница, как? Между прочим, это функция стандартной библиотеки C. Вместе с div(). В реализации библиотеки от CodeVision отсутствует.
Обычно эти функции инлайнятся, если есть аппаратное деление. После аппаратного (или программного) деления и частное и остаток обычно присутствуют в регистрах процессора и структура ldiv_t (div_t) эти самые регистры впрямую и отображает. Так было на x86. На ARM и AVR не интересовался.

Сообщение отредактировал Genadi Zawidowski - Jun 25 2010, 20:37
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 26 2010, 09:04
Сообщение #7


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Genadi Zawidowski @ Jun 25 2010, 23:33) *
После аппаратного (или программного) деления и частное и остаток обычно присутствуют в регистрах процессора и структура ldiv_t (div_t) эти самые регистры впрямую и отображает.
Вот именно. Просто всё-таки нужно представлять себе, во что выливается операция / или %, даже если пишешь для x86, как вообще деление реализуется.

Цитата(Genadi Zawidowski @ Jun 25 2010, 23:33) *
Так было на x86. На ARM и AVR не интересовался.
Да так же. Только для AVR в библиотеке компилятора есть функции для деления, которые вызываются и для /, %, только при этом берётся половина результата. А div просто переназначено на эту функцию, возвращающую на регистрах обе части результата деления.
avr-gcc, stdlib.h
Код
/* __divmodhi4 and __divmodsi4 from libgcc.a */
extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __ATTR_CONST__;
extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __ATTR_CONST__;


Так что применение div и тут в два раза сокращает затраты времени на деление по сравнению с раздельной парой /, %. Оптимизатор сам не видит, что можно было бы вызвать еление один раз.
Хотя для данной конкретной задачи для AVR другие способы побыстрее всё равно. Вариант с div, кажется, немного компактнее для случая, когда деление в программе всё равно есть и __divmod* всё равно линкуются.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 26 2010, 09:23
Сообщение #8


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(ReAl @ Jun 26 2010, 13:04) *
Оптимизатор сам не видит, что можно было бы вызвать деление один раз.

Да, я тоже замечал, что функция деления вызывается именно два раза (сначала остаток, потом деление), несмотря на то, что достаточно было бы единственного вызова.

Хотя это было, вроде бы, ещё на AVR. Не знаю, как это будет компилироваться под кортекс и RealView.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- badik   Вопрос С   Jun 24 2010, 18:29
- - DRUID3   atoi()/itoa(); Или что-то отсюда...   Jun 24 2010, 18:43
- - Genadi Zawidowski   Тут или пользоваться sprintf (или её вариантами - ...   Jun 24 2010, 18:57
- - ViKo   В свое время я задавал такой же вопрос. Получил не...   Jun 25 2010, 11:29
|- - zltigo   QUOTE (ViKo @ Jun 25 2010, 14:29) Сам нап...   Jun 25 2010, 11:38
||- - sonycman   Цитата(zltigo @ Jun 25 2010, 15:38) Совет...   Jun 25 2010, 12:15
||- - ViKo   Цитата(zltigo @ Jun 25 2010, 14:38) Совет...   Jun 25 2010, 12:21
|- - jorikdima   Цитата(ViKo @ Jun 25 2010, 15:29) В свое ...   Jun 25 2010, 12:17
|- - defunct   Цитата(ViKo @ Jun 25 2010, 14:29) Сам нап...   Jun 25 2010, 16:48
|- - ssvSerge   Цитата(defunct @ Jun 25 2010, 19:48) Друг...   Jun 25 2010, 17:26
- - zltigo   QUOTE (sonycman @ Jun 25 2010, 15:15) Что...   Jun 25 2010, 12:24
|- - ViKo   Цитата(zltigo @ Jun 25 2010, 15:24) ...ли...   Jun 25 2010, 12:31
||- - sonycman   Цитата(ViKo @ Jun 25 2010, 16:31) Оставил...   Jun 25 2010, 12:38
||- - zltigo   QUOTE (sonycman @ Jun 25 2010, 15:38) Осо...   Jun 25 2010, 12:57
||- - ViKo   Цитата(zltigo @ Jun 25 2010, 15:57) В дан...   Jun 25 2010, 13:06
||- - sonycman   Цитата(zltigo @ Jun 25 2010, 16:57) Ну дл...   Jun 25 2010, 13:13
||- - aaarrr   Цитата(sonycman @ Jun 25 2010, 17:13) Нер...   Jun 25 2010, 13:14
|- - ViKo   Цитата(zltigo @ Jun 25 2010, 15:24) лучше...   Jun 25 2010, 12:50
|- - zltigo   QUOTE (ViKo @ Jun 25 2010, 15:50) У вас е...   Jun 25 2010, 13:28
|- - ViKo   Цитата(zltigo @ Jun 25 2010, 16:28) как и...   Jun 25 2010, 13:34
|- - zltigo   QUOTE (ViKo @ Jun 25 2010, 16:34) нужно п...   Jun 25 2010, 13:39
|- - ViKo   Цитата(zltigo @ Jun 25 2010, 16:39) Про ...   Jun 25 2010, 13:43
|- - aaarrr   Цитата(ViKo @ Jun 25 2010, 17:43) И к код...   Jun 25 2010, 14:49
- - aaarrr   Просто как пример: Кодunsigned int short2str(c...   Jun 25 2010, 12:41
||- - ViKo   Цитата(Genadi Zawidowski @ Jun 25 2010, 23...   Jun 25 2010, 21:29
||- - demiurg_spb   Цитата(ReAl @ Jun 26 2010, 13:04) Так что...   Jun 27 2010, 18:51
|- - sonycman   Цитата(zltigo @ Jun 25 2010, 17:56) А то,...   Jun 25 2010, 14:55
|- - zltigo   QUOTE (sonycman @ Jun 25 2010, 17:55) Буд...   Jun 25 2010, 16:30
- - Goodefine   Когда то для дисплея (отсюда фиксированное число ц...   Jun 25 2010, 16:19
|- - ViKo   Цитата(Goodefine @ Jun 25 2010, 19:19) vo...   Jun 25 2010, 17:16
- - ViKo   Пролистал K&R второе издание от корки до корки...   Jun 25 2010, 19:15
|- - aaarrr   Цитата(ViKo @ Jun 25 2010, 23:15) Найти б...   Jun 25 2010, 19:20
|- - dimka76   Цитата(ViKo @ Jun 25 2010, 23:15) Пролист...   Jun 26 2010, 04:36
|- - zltigo   QUOTE (ViKo @ Jun 25 2010, 22:15) Пролист...   Jun 26 2010, 08:11
|- - ViKo   Цитата(zltigo @ Jun 26 2010, 11:11) Не об...   Jun 26 2010, 09:08
|- - zltigo   QUOTE (ViKo @ Jun 26 2010, 12:08) А я для...   Jun 26 2010, 09:18
- - sigmaN   K&R не Ымбеддеры. А zltigo дело говорит вам. К...   Jun 25 2010, 19:27
- - ViKo   Покопался в своих проектах, нашел преобразование д...   Jun 25 2010, 19:52
- - Непомнящий Евгений   В свое время написал такое: CODE /** * "Указ...   Jun 26 2010, 09:16
- - ViKo   Следуя рекомендациям, слегка модернизировал код. К...   Jun 26 2010, 10:24
|- - ssvSerge   Цитата(ViKo @ Jun 26 2010, 14:24) Следуя ...   Jun 26 2010, 11:31
|- - zltigo   QUOTE (ViKo @ Jun 26 2010, 13:24) Для все...   Jun 26 2010, 15:05
|- - ViKo   Цитата(zltigo @ Jun 26 2010, 18:05) // За...   Jun 26 2010, 16:28
|- - zltigo   QUOTE (ViKo @ Jun 26 2010, 19:28) Sign - ...   Jun 26 2010, 16:40
|- - aaarrr   Цитата(ViKo @ Jun 26 2010, 20:28) 2 aaarr...   Jun 26 2010, 16:51
- - ViKo   2 ssvSerge В ваших алгоритмах число записывается з...   Jun 26 2010, 13:55
|- - ssvSerge   Цитата(ViKo @ Jun 26 2010, 16:55) В алгор...   Jun 26 2010, 14:19
|- - ViKo   Цитата(ssvSerge @ Jun 26 2010, 17:19) ну ...   Jun 26 2010, 14:42
|- - ssvSerge   Цитата(ViKo @ Jun 26 2010, 18:42) для мен...   Jun 26 2010, 15:12
|- - aaarrr   Цитата(ViKo @ Jun 26 2010, 18:42) В данны...   Jun 26 2010, 15:14
- - ViKo   Спасибо всем! На сегодня и завтра - умолкаю. ...   Jun 26 2010, 17:00
|- - sonycman   Цитата(ViKo @ Jun 26 2010, 21:00) Возраду...   Jun 27 2010, 17:02
- - badik   Господа всем огромный привет, ни как не думал, что...   Jun 28 2010, 17:43
- - ViKo   Прежде, чем писать новое, изучил в отладчике работ...   Jun 28 2010, 21:09
|- - zltigo   QUOTE (ViKo @ Jun 29 2010, 00:09) Заносит...   Jun 28 2010, 21:33
|- - ViKo   Цитата(zltigo @ Jun 29 2010, 00:33) Их у ...   Jun 28 2010, 21:57
|- - zltigo   QUOTE (ViKo @ Jun 29 2010, 00:57) Перед ...   Jun 28 2010, 22:03
|- - ViKo   2 zltigo Непременно. Выставил две "галки...   Jun 29 2010, 08:29
- - ViKo   Кодvoid itoad(int number, uint8_t *string...   Jun 29 2010, 13:48
|- - Сергей Борщ   Цитата(ViKo @ Jun 29 2010, 16:48) Код *...   Jun 29 2010, 14:18
|- - ViKo   Цитата(Сергей Борщ @ Jun 29 2010, 17:18) ...   Jun 29 2010, 14:29
|- - zltigo   QUOTE (Сергей Борщ @ Jun 29 2010, 17:18) ...   Jun 29 2010, 14:34
||- - ViKo   Цитата(zltigo @ Jun 29 2010, 17:34) *(uin...   Jun 29 2010, 14:39
|||- - zltigo   QUOTE (ViKo @ Jun 29 2010, 17:39) Кавычки...   Jun 29 2010, 14:45
||- - ViKo   Цитата(zltigo @ Jun 29 2010, 17:34) Код ...   Jun 29 2010, 17:23
||- - zltigo   QUOTE (ViKo @ Jun 29 2010, 20:23) Так - н...   Jun 29 2010, 17:40
||- - ViKo   Цитата(zltigo @ Jun 29 2010, 20:40) Код ...   Jun 29 2010, 18:29
||- - zltigo   QUOTE (ViKo @ Jun 29 2010, 21:29) В смысл...   Jun 29 2010, 18:38
||- - ViKo   Цитата(zltigo @ Jun 29 2010, 21:38) Вот к...   Jun 29 2010, 19:52
||- - zltigo   QUOTE (ViKo @ Jun 29 2010, 22:52) Во всех...   Jun 29 2010, 21:13
|- - ViKo   Цитата(Сергей Борщ @ Jun 29 2010, 17:18) ...   Jul 1 2010, 08:55
|- - zltigo   QUOTE (ViKo @ Jul 1 2010, 10:55) Только в...   Jul 1 2010, 11:57
|- - ViKo   Цитата(zltigo @ Jul 1 2010, 14:57) Это де...   Jul 1 2010, 12:34
|- - zltigo   QUOTE (ViKo @ Jul 1 2010, 14:34) Давайте ...   Jul 1 2010, 12:38
|- - ViKo   Цитата(zltigo @ Jul 1 2010, 15:38) Думае...   Jul 1 2010, 12:52
|- - zltigo   QUOTE (ViKo @ Jul 1 2010, 14:52) Хочу зна...   Jul 1 2010, 12:55
|- - ViKo   Цитата(zltigo @ Jul 1 2010, 15:55) Посчит...   Jul 1 2010, 13:59
|- - zltigo   QUOTE (ViKo @ Jul 1 2010, 15:59) 2 zltigo...   Jul 1 2010, 14:11
|- - sonycman   Цитата(ViKo @ Jul 1 2010, 17:59) А SDIV r...   Jul 1 2010, 15:24
- - ViKo   Выкладываю ваш вариант. Последнее, что вы написали...   Jun 30 2010, 08:00
- - ViKo   "Шеф, все пропало!..." По команде ...   Jun 30 2010, 09:22
|- - zltigo   QUOTE (ViKo @ Jun 30 2010, 11:22) На всяк...   Jun 30 2010, 19:02
|- - ViKo   Цитата(zltigo @ Jun 30 2010, 22:02) Ну ес...   Jun 30 2010, 20:29
|- - zltigo   QUOTE (ViKo @ Jun 30 2010, 22:29) У вас в...   Jun 30 2010, 21:14
- - ViKo   16-битовая версия (на основе 32-битовой) Кодvoid ...   Jun 30 2010, 11:26
- - MrYuran   Вот никак не могу понять, почему никто до сих пор ...   Jun 30 2010, 11:31
|- - ViKo   Цитата(MrYuran @ Jun 30 2010, 14:31) Вот ...   Jun 30 2010, 11:35
- - ViKo   Напоследок - проверил вариант с преобразованием в ...   Jun 30 2010, 13:12
|- - aaarrr   Цитата(ViKo @ Jun 30 2010, 17:12) Получил...   Jun 30 2010, 13:34
|- - ViKo   Цитата(aaarrr @ Jun 30 2010, 15:34) Ну, э...   Jun 30 2010, 13:44
- - _Pasha   Цитата(MrYuran @ Jun 30 2010, 14:31) Тяжё...   Jun 30 2010, 21:42
- - ViKo   Перепробовал все "извращения" со сравнен...   Jul 2 2010, 09:07
- - ViKo   Думаю, хуже не станет, если я доложу, что уменьшил...   Jul 2 2010, 18:43
2 страниц V   1 2 >


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

 


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


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