Re: чётное/не чётное?

From
Ivan Boldyrev (2:5080/1003)
To
"Andrew Ezhguroff" ()
Date
2003-01-26T12:12:56Z
Area
RU.ALGORITHMS
From: Ivan Boldyrev <boldyrev@dataeast.ru>

"Andrew Ezhguroff" <eandr@com2com.ru> writes:

> Привет! "Sergey Pavlov" <Sergey.Pavlov@p27.f4.n5033.z2.fidonet.org>
> сообщил(а):
> 
>  AE>> Hy и зачем так сложно? :-) Это делается так:
>  AE>> if(Chislo%2)
>  SP> Или пpовеpить кpайний бит: если 0x???1 - нечетное, иначе 0x???0 -
>  SP> четное if(Chislo & 0x01)
> 
> Только вот для "%2" GCC генерирует:
> 
>         testl   $1, 8(%ebp)
> 
> , а для "&0x01":
> 
>         movl    8(%ebp), %eax
>         andl    $1, %eax
>         testb   %al, %al
> 

Ты во втором случае забыл передать компилятору ключ оптимизации. Если
передавать идентинчные ключи, то и ассемблерный код получается одинаковым.

Проверено на GCC 2.96. На более свежих проверять нет смысла.

Я для чистоты эксперимента всегда помещаю сравниваемые реализации в
один исходник.

-- 
Ivan Boldyrev
PGP fp: 3640 E637 EE3D AA51 A59F  3306 A5BD D198 5609 8673

                                                        Ваши байты биты!
--- ifmail v.2.15dev5
 * Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)