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)