avva: (Default)
[personal profile] avva
Смешной баг. Примитивная хэш-функция берёт строку и в цикле умножает текущее значение хэша на 33 и прибавляет числовое значение следующего символа в строке. В конце берёт остаток от деления на кол-во слотов в таблице. Всё хорошо, но когда строка оказалась достаточно длинной, значение хэша вышло за пределы 2^32 и не вернулось к нулю, а было переведено слишком умным Perl'ом в тип с плавающей точкой. Который при попытке поделить его с остатком исправно давал 0.

Date: 2004-06-08 01:36 pm (UTC)
From: [identity profile] uniqs.livejournal.com
А что, в перле нет 64-bit integer type ?

Date: 2004-06-08 01:55 pm (UTC)
From: [identity profile] avva.livejournal.com
Смотря где он скомпилирован, очевидно.
А может, это 64 бита переполнились, я не уверен, на самом деле - не подсчитывал специально.

Есть, начиная с 5.6

Date: 2004-06-08 02:54 pm (UTC)
From: [personal profile] alll
Но 5.6 и выше есть далеко не везде. :)

Date: 2004-06-08 02:54 pm (UTC)
From: [identity profile] cmm.livejournal.com
зато там строки самые шырокие в мире.

Date: 2004-06-09 02:33 pm (UTC)
From: [identity profile] photon.livejournal.com
А что, если 64 бит, то не переполнится никогда?

January 2026

S M T W T F S
    1 2 3
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 5th, 2026 11:39 pm
Powered by Dreamwidth Studios