Re: perl -e 'print ~123;'

Page principale

Répondre à ce message
Auteur: Xavier Bestel
Date:  
À: Marc TERRIER
CC: guilde
Sujet: Re: perl -e 'print ~123;'
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