![]() |
|
|
![]()
|
|
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Привет. Нужна помощь в проверке значений чисел.
Есть 16 бит для каждого числа, причём z,x - логические величины (старший бит под знак не используется), а Rez,y, z&x - fhbavtnbxtcrbt (сто знаком). Rez=y - (z&x) z&x = c Вариант 1. 0<=z,x<=2^16 -1 ---> -2^15 <= x&z <= 2^15 -1 По-моему, y здесь может быть только 0, иначе возможен вариант переполнения: y=-10, а c = 2^15 -1. y - c < -2^15 - переполнение. Или y = 1, а с = -2^15 -1 - тоже переполнения. Вариант 2. 0<=x,z <= 2^15 -1 --> 0<=z&x<=2^15 -1 0<=y<=2^15 -1 По-моему, верно. Очень важно, чтобы в этих вариантах не было ошибок. Это сообщение отредактировал(а) powerfox - 28.10.2006, 16:33 |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Да,верно. Есть еще вариант проверки вводимых данных динамически. После ввода, прежде чем перейти к вычислениям, проводишь проверку для конкретно введеных чисел. Удобнее "постаривать" у, потому что, если подстраивать x и z под у, то сначала их надо проверить между собой, то есть на одну проверку больше. Но я не знаю твоего задания, может сначало надо вводить у и под него подстраивать x и z. |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
||||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Ну я и сказал, что не знаю твоего задания. Тогда второй варинт верный и все тут.
|
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
А первый? Он не имеет смысла, но числа верные же?
|
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Не понял вопроса. Числа верные в том смысле, что каждое из них не выходит за пределы слова, но условия не верны, ведь нет гарантии, что результат будет размером в слово. |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
В том смысле, что при 0<=z,x<=2^16 -1 y = 0 Будет: -2^15 <= x&z <= 2^15 -1 И результат влезет в [-2^15; 2^15 -1] |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |