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-03 02:02 pm (UTC)
From: [identity profile] ullr.livejournal.com
1. #define LEAST_BIT(z) (z-((z-1)&z)
if ( LEAST_BIT(x) > LEAST_BIT(y) )
//bla-bla-bla


Date: 2003-06-03 10:05 pm (UTC)
From: (Anonymous)
Хороший вариант, но можно (http://www.livejournal.com/users/avva/796046.html?thread=9741198#t9741198) на две операции меньше (за ассемблер, правда, не скажу).

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 30 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 09:50 am
Powered by Dreamwidth Studios