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 09:55 pm (UTC)
From: (Anonymous)
1. Это решение автора задачи (не моё):
bool Compare(DWORD n1, DWORD n2)
{
return (n1 ^ (n1 - 1)) <= (n2 ^ (n2 - 1));
}

2. Ну а это моё решение задачи № 2 (неправильно понятой №1):
bool Compare2(DWORD n1, DWORD n2)
{
DWORD mask = ((n1 ^ n2) - 1) ^ (n1 ^ n2);
return (n1 & mask) <= (n2 & mask);
}

Disclaimer: код не отлажен (хоть и проверен на бумажке) ;)

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

Page Summary

Style Credit

Expand Cut Tags

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