· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› Overflow detection

<< . 1 . 2 . 3 .

Посл.отвђт Сообщенiе


Дата: Июн 24, 2004 07:46:05

Что то я через чур лишнего написал.
Можно без всяких if
CF = ((a shr 1) + (b shr 1)) + (a and b and 1)) shr 31
Тоже можно упростить но условные переходы убраны


Дата: Июн 24, 2004 08:01:24

Так вот в C если синтаксис правильно помню.
Для 32х битных чисел.

CF=((a >> 1)+ (b >> 1)) + (a & b & 1)) >> 31


Дата: Июн 24, 2004 08:58:16

Вычисление CF для unsigned int:

CF = ((x&y) | (~(x+y+cf) &(x^y))) >> 31
CF = ((~x&y) | ((x-y-cf) & (~x^y) >> 31

или такой вариант:

CF = x>~y для x+y
CF = x<y для x-y


Дата: Июн 24, 2004 10:34:41

CF = ((x&y) | (~(x+y+cf) &(x^y))) >> 31
:)
cf то что такое? какая то переменная или реальный cf?
Если реальный, то речь шла о том что в машине Нет CF.
Но кстати не так оказалось плохо уж я и придумал на рыбу.
Тоже семь операций на мои семь.
CF = x>~y для x+y
Имеется ввиду какая то формула для больше а не определение по флагам?


Дата: Июн 24, 2004 12:32:39

The Svin
cf это переменная в которой хранится перенос вычисленный при сложении или вычитании предыдущей пары слов.

Имеется ввиду какая то формула для больше а не определение по флагам?
Имеется ввиду, что Си-компилятор должен уметь генерить код, который это посчитает 8)


Дата: Июн 24, 2004 18:02:20

Спасибо, господа. Спасибо еще раз. Ответы исчерпывающие.

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.056