avva: (Default)
[personal profile] avva
Забавный комментарий в одном из файлов исходников пакета Judy:


// Test if Word has any of the 4 bytes == '\0':
//
// This arcane code takes advantage of the CPU having a fast barrel shifter and
// a carry bit. Doug stole this code from elsewhere, and we know it works, but
// we really can't explain why.

#define NOZEROBYTE(Word) \
((((((Word) - 0x01010101) | (Word)) ^ (Word)) & 0x80808080) ? 0 : 1)

Кто возьмётся объяснить? ;) У меня глаза слипаются и думать совершенно нет сил, я отправляюсь спать.

Update: Всё-таки подумал. Просто на самом деле. Но красиво.

Date: 2003-06-02 10:33 pm (UTC)
From: [identity profile] malaya-zemlya.livejournal.com
Ага. Эта штука была в старом Dr.Dobbs Journal-е

Другой вариант на ту же тему - со вступительного интервью на фирму Eidos:

c=0
while (x)
{
x&=x-1;
c++;
}

Date: 2003-06-02 11:45 pm (UTC)
From: [identity profile] bolk.livejournal.com
Красивее
for (c=0; x; c++) x&=x-1

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 01:56 pm
Powered by Dreamwidth Studios