hex(2^0)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

hex(2^0)

#1

Message par mdanielm »

Le résultat est 3FF, c'est curieux non ?
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2273
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: hex(2^0)

#2

Message par jchd »

Pas vraiment. ConsoleWrite(Hex(1.0) & @LF) donne la même chose et pour cause : 2^0 donne un double (= 1.0) dont l'image hexa est ...
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: hex(2^0)

#3

Message par mdanielm »

Donc, 2^0 est un double et 2^n est un integer pour n>0 ?
Encore plus curieux!
for $i=0 to 10
   consolewrite(hex(2^$i) & @crlf)
Next
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: hex(2^0)

#4

Message par mdanielm »

Je persiste à croire qu'il y a malfaçon dans la construction de x^y et je demande à voir le code.
Il faut étudier 3 cas:
x^y pour y entier positif (multiplication répétitive et x^0=1 comme C(n,0)=1)
x^y pour y entier négatif et x<>0 ( x^y = 1/(x^-y) )
x^y = exp(y*ln(x)) pour x>0 et y quelconque, même 0
func P($x,$y) ; x^y
   if IsInt($y) then
      if $x=0 then return ($y<=0 ? "ERREUR" : 0)
      if $y=0 then return 1
      Local $r=1
      for $i=1 to abs($y)
         $r *= $x
      Next
      return ($y>0 ? $r : 1/$r)
   Else
      return ($x>0 ? Exp($y*Log($x)) : "ERREUR")   
   endif
EndFunc
hex(P(2,0)) donne alors le résultat attendu, (celui donné par tous les langages de programmation, y compris ceux des calculatrices scientifiques)
Répondre