На самом деле не числа 32-битные, а битовые операции работают только с 32-битными числами и автоматически приводят операнды к таковым округляя и выкидывая лишние биты.
Вообще этот алгоритм (hash32) притащили из Java, и вообще-то он может возвращать отрицательные числа.
А вот что хотел автор складывая число и строку (h1 + str) сложно сказать.