Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2010, 01:39   #1
Flay
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 26
По умолчанию Переполнение при умножении

Здравствуйте. Помогите решить задачку. Вот не могу ничего вспомнить как узнать переполнение после умножения.
н-р:
Код:
int x = 0xAAAAAAAB;
int y = 0x19;
int z = x*y;
z = 4
а остальное где ловить?
На асме все чики пуки.
Код:
mov eax, 0xAAAAAAAB
mov edx, 0x19
mul edx
eax = 4
edx = 8
Flay вне форума Ответить с цитированием
Старый 29.09.2010, 01:47   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

используйте long long
(как я понял вам надо еще и две половинки отдельно?, тогда union будет нужен)

а вообще вы б подумали что у вас результат это 64-бита(два регистра по 32)
а int это 32-бита, вот остальное и выкинули.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 29.09.2010 в 01:50.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.09.2010, 01:58   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Может, использрвать другой тип? __int64 ?
Black Fregat вне форума Ответить с цитированием
Старый 29.09.2010, 17:16   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Можно использовать библиотеки для очень больших чисел, к примеру - gmp, это если вам long long будет мало
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 29.09.2010, 19:47   #5
Flay
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 26
По умолчанию

А можно вопрос.
вот сделал я
(int64 >> 32) & 0xffffffff;
и пытаюсь запихнуть в int32, но VS отказывается это делать.
Flay вне форума Ответить с цитированием
Старый 29.09.2010, 21:34   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
и пытаюсь запихнуть в int32, но VS отказывается это делать.
мб явное приведение типа использовать?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 29.09.2010, 21:50   #7
Flay
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 26
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
мб явное приведение типа использовать?
такая же ошибка
Flay вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переполнение при делении JeyKip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.03.2010 14:04
массивы, переполнение при делении Alter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.05.2008 21:11
Переполнение при возведении в степень ruPy Общие вопросы Delphi 1 01.02.2008 19:21
двузначные числа которые при умножении на 3 будут заканчиваться на цифру 4 Ases_51 Паскаль, Turbo Pascal, PascalABC.NET 4 13.01.2008 11:37
Переполнение стека при передачи функциям массивов большой размерности graphoman Общие вопросы Delphi 2 07.01.2008 21:47