multiplikatywny skrót knuth

Czy to poprawna implementacja multiplikatywnego skrótu Knutha.

int hash(int v)
{
    v *= 2654435761;
    return v >> 32;
}

Czy przepełnienie mnożenia wpływa na algorytm?

Jak poprawić wydajność tej metody?