Re: perl -e 'print ~123;'

Page principale

Répondre à ce message
Auteur: Marc TERRIER
Date:  
À: Xavier Bestel
CC: Marc TERRIER, guilde
Sujet: Re: perl -e 'print ~123;'
Selon Xavier Bestel <xavier.bestel@???>:

> Salut,
>
> On Wed, 2009-09-30 at 14:52 +0200, Marc TERRIER wrote:
> > Bonjour,
> >
> > Je viens de découvrir l'astuce suivante, pour déterminer si une machine
> est en
> > 32 ou en 64 bits :
> >
> > perl -e 'print ~123;'
> >
> > C'est censé renvoyer 4294967172 sur un OS 32 bits, et 18446744073709551492
> sur
> > un OS 64 bits. N'ayant pas de machine Linux sous la main (là je suis au
> taf), je
> > l'ai essayé sous Solaris 7 32 bits, Solaris 10 64 bits, et sous Windows XP
> 32
> > bits. Ça a l'air de marcher, mais le site où j'ai trouvé ça n'explique
> rien,
> > notamment pas la signification du tilde devant le 123. Le O'REILLY "Perl en
> > action", que j'ai sous les yeux, n'en parle pas, et Google ne m'est pas
> d'une
> > grande aide. Est-ce qu'il y a quelqu'un parmi vous à qui ça parle ?
>
> le '~' c'est une négation binaire (on change les 1 en 0 et vice-versa).
> du coup, ~0 ça te fera 0xFFFFFFFF en 32 bits et 0xFFFFFFFFFFFFFFFF en 64
> bits.
>
>     Xav


Ah oui, bien vu, c'est comme en C/C++, tout simplement.

perl -e 'printf "%X", ~0;' ===> FFFFFFFF

Vu que c'est du Perl, je m'attendais à quelque chose de plus tordu, mais j'ai eu
tort de chercher midi à quatorze heures.

Merci Xavier...

--
Marc
Mail : marc.terrier [at] free.fr
Site : http://marc.terrier.free.fr