Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Для беззнаковых погрешность та же - единица, и, "на вскидку" - десяток-два тактов: #define AvgAvgUint(x,y) ( (x>>1) + (y >> 1) + ((x|y)&1)); 23.08.07 21:08 Число просмотров: 5621
Автор: kstati <Евгений Борисов> Статус: Elderman Отредактировано 23.08.07 21:23 Количество правок: 3
|
А если еще и в оптимизацию податься, которая мешает читать ))
move ebx, x ; (x>>1) // вот здесь то, равно как и в move ecx,y и висит "основной тормоз" -- ОЗУ ;)
xor edx,edx ; а вот и один (через две строки)
move eax,ebx
move ecx, y ; (y>>1)
or eax, ecx ; получит (x|y)&1
inc edx
shr ebx,dl
and al, dl
shr ecx, dl ; хэ, что-т напоминает ;)
add ebx,al
nop
add ebx, ecx ; == retval
|
|
|