Thread $a >> $b: in perl und php = verschieden? (15 answers)
Opened by jan at 2004-07-07 01:26

Taulmarill
 2004-07-07 12:07
#15316 #15316
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
die erklärung von esskar ist leider nicht ganz richtig.
bei bash und php findet ein überlauf statt wie von ihm beschrieben, bei perl ist das ein bischen anders!
perl läuft anscheinend nicht über sondern voll. so kommt 524287 zustande.

zur verdeutlichung:
4294967294 ist 11111111111111111111111111111110
4294967295 ist 11111111111111111111111111111111
9999999999 ist 11111111111111111111111111111111 (!!!)

die 524287 die bei perl rauskommen sind nun binär 00000000000001111111111111111111.
wir erkennen hier, dass anscheinend der mit 32 bit gefüllte integer um die 13 bits geshiftet wurde.

lösung:

benutze das modul Math::BigInt
Code: (dl )
perl -MMath::BigInt -e'$x = Math::BigInt->new("4653896912");$x->brsft("13");print $x->bstr;'
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B

View full thread $a >> $b: in perl und php = verschieden?