|
|
| Посл.отвђт | Сообщен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 Спасибо, господа. Спасибо еще раз. Ответы исчерпывающие. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.056 |