powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / операции с числом в C.
18 сообщений из 18, страница 1 из 1
операции с числом в C.
    #39134334
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если есть число, скажем 12345678 как мне взять две последних цифры, чтоб получилось 78.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134345
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
остаток от деления на 100, не?
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134348
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть проблема такая - 123456 нужно высветить на верхнем дисплее а 78 на нижнем.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134352
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsevостаток от деления на 100, не?
да. спасибо.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134356
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
деление и модулус прожорливые операции. думал шифтами или маскированием но что то не получается.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134369
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7думал шифтами или маскированием
не получится
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134391
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tjenya7думал шифтами или маскированием
не получится
Не факт

1) Я бы смотрел в сторону преобразований Binary <--> BCD, возможно какие-то алгоритмы и существуют.
2) AFAIK Любое деление на константу, можно изобразить как сдвиг (деление на 2) и вычитание ))). Для совсем-совсем древних процессоров это было бы быстрее, чем универсальное деление/остаток от деления.

Т.е. деление на 100, это 3 сдвига + 3 вычитания.

Для современных - не знаю. Кроме того, оптимизирующий компилятор, сам такую оптимизацию (если она имеет смысл и компилятор не полный дурак) сделать должен.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134400
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первая попавшаяся ссылка из гугле на другой форум:

http://rsdn.ru/forum/alg/4890130.flat

Методы существуют, народ извращается кто как может )))
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134406
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7то есть проблема такая - 123456 нужно высветить на верхнем дисплее а 78 на нижнем.Как и что реально на дисплей передается?
У меня есть подозрение, что деление с остатком будет ничтожно на этом фоне.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134480
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevТ.е. деление на 100, это 3 сдвига + 3 вычитания.
Формулу можно?

Тоже погуглил ради интереса, вот например:
http://www.microchip.ru/phorum/read.php?f=2&i=14577&t=14577 Re: Деление на 10, используя сдвиг
Автор: zaka213 ()
Дата: 17/02/2003 14:12

Для 8-битного числа 1/10 = 1/8 - 1/32 + 1/128 + остаток.
Для 16-битного ряд удлинняется до 1/2**15.

Как вариант: можно умножить 0.01
Код: sql
1.
int res = (int)((double) value * 0.01 + 0.005)
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134559
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если поциент пользователь вводит изначально число с клавиатуры то
получить последние числа - не проблема. Я-бы даже сказал вообще не задача.

Так... просто взгляд с другого ракурса.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134609
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел во что компилируется.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	int x = atoi(argv[1]);
00401000  mov         eax,dword ptr [esp+8] 
00401004  mov         ecx,dword ptr [eax+4] 
00401007  push        ecx  
00401008  call        dword ptr [__imp__atoi (4020A4h)] 
0040100E  mov         ecx,eax 
	int y = x % 100;
00401010  mov         eax,51EB851Fh 
00401015  imul        ecx  
00401017  sar         edx,5 
0040101A  mov         eax,edx 
0040101C  shr         eax,1Fh 
0040101F  add         eax,edx 
00401021  imul        eax,eax,64h 
00401024  sub         ecx,eax 
	printf("%d\n", y);
00401026  push        ecx  
00401027  push        offset string "%d\n" (402104h) 
0040102C  call        dword ptr [__imp__printf (40209Ch)] 


Оптимизатор заменяет на умножения, сдвиги и сложения.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134713
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7деление и модулус прожорливые операции.
Да ну? Ты какой процессор используешь? 8080?..
...
Рейтинг: 0 / 0
операции с числом в C.
    #39134794
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7...нужно высветить на верхнем дисплее а 78 на нижнем.

другой дисплей или другую строчку?

И пару слов, что за периферия у вас, и как происходит вывод на нижнем уровне...
Боюсь Вы два раза решаете одну и ту-же проблему :)

(круглый)
...
Рейтинг: 0 / 0
операции с числом в C.
    #39136537
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то платёжный терминал ИМХО.
...
Рейтинг: 0 / 0
операции с числом в C.
    #39136642
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovjenya7деление и модулус прожорливые операции.
Да ну? Ты какой процессор используешь? 8080?..
4004 скореее, но и он с работой калькулятора успешно справлялся
...
Рейтинг: 0 / 0
операции с числом в C.
    #39136679
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7деление и модулус прожорливые операции. думал шифтами или маскированием но что то не получается.


потому что сдвиги дают операции, аналогичные нужной тебе, но в двоичной системе счисления, а нк в десятичной
...
Рейтинг: 0 / 0
операции с числом в C.
    #39137232
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКакой-то платёжный терминал ИМХО.
В этом случае стоит выкинуть из задачи слово "число" и она сразу упростится до тривиальной.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / операции с числом в C.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]