За последние 24 часа нас посетили 16383 программиста и 1678 роботов. Сейчас ищут 938 программистов ...

CRC32 на x64.

Тема в разделе "Прочие вопросы по PHP", создана пользователем sat_art, 20 янв 2009.

  1. sat_art

    sat_art Активный пользователь

    С нами с:
    20 янв 2009
    Сообщения:
    3
    Симпатии:
    0
    Сегодня столкнулся.
    http://bugs.php.net/bug.php?id=36306

    Не могу понять почему

    Actual result:
    --------------
    On 64-bit platform i see 3436838502
    On 32-bit -858128794

    актуальные результаты одной и той же функции на разных платформах должны отличаться?
    Мы же считаем CRC32 - т.е. 32 битную. И она должна быть на всех платформа одинакова...

    Или я чего то недопонимаю.
     
  2. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    все правильно. в 32-х разрядной перменной старший бит отводится для знака.
    В 64-х разрядной переменной знаковый бит - 63-й.
    фактически это одно и то же число. переведи в хекс и увидишь
     
  3. sat_art

    sat_art Активный пользователь

    С нами с:
    20 янв 2009
    Сообщения:
    3
    Симпатии:
    0
    Правильно Но CRC32 на то и 32 а не 64. И на выходе int со знаком. Т.е. к платформе привязки не должно быть.
     
  4. Ты можешь взять исходники той версии, залезть и посмотреть, в чем была разница )
     
  5. там в тексте бага вполне подробное обьяснение, почему
     
  6. sat_art

    sat_art Активный пользователь

    С нами с:
    20 янв 2009
    Сообщения:
    3
    Симпатии:
    0
    Так в том и дело что баг написан для 4-й версии где CRC32 считалось (по моему мнению) правильно. Но исправлен был как для 5-й версии.