IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Décalage arithmetique en javascript


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par défaut Décalage arithmetique en javascript
    Bonjour, j'essaie de comprendre un script sur une méthode de cryptage DES et je me pose des questions sur l'utilisation de l'opérateur >>> avec un nombre de bit négatif (ex xxx >>> -16) que j'ai rencontré plusieurs fois dans ce code.

    Je me suis faite quelques exemple avec des nombres assez simple, mais je parviens pas à comprendre comme ça marche.

    ex :
    54 >>> 2 donne 13, ok
    -54 >>> 2 donne 1073741810, ok (vu que le bit rentrant ne garde pas le signe, ça parait logique aussi).
    54 >>> -2 donne 0 ??? je ne comprend pas pourquoi ?
    -54 >>> -2 donne 3 ??? idem, je rame pour déduire le pourquoi de la chose.

    Quelqu'un peut m'expliquer avant que je ne finisse chauve ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    >>> est un operateur de traitement binaire qui retourne du numérique en décalant les bits vers la droite (divise par 2 à chaque décalage). Les zéros qui sortent à droite sont perdus, tandis que des zéros sont insérés à gauche
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par défaut
    ça je suis d'accord.

    Mais pourquoi lorsque j'ai -2 au lieu de 2, j'ai des résultats tout bizarre ?

  4. #4
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par David.V
    54 >>> 2 donne 13, ok
    -54 >>> 2 donne 1073741810, ok (vu que le bit rentrant ne garde pas le signe, ça parait logique aussi).
    On est d'accord, c'est logique....

    Citation Envoyé par David.V
    54 >>> -2 donne 0 ??? je ne comprend pas pourquoi ?
    -54 >>> -2 donne 3 ??? idem, je rame pour déduire le pourquoi de la chose.
    D'après la spécif ecma, le nombre de droite est considéré comme non signé:
    -2 => 4294967294

    Donc, ça devrait toujours faire un peu près 0.... D'où le fait que ton premier résultat me parait assez logique. Pour le deuxième, j'avoue que là, je ne vois plus. Un décalage de 4294967294 bits, sur un entier de 32 bits, ça devrait faire 0, dans tout les cas.
    De la même façon, -16 => 4294967280 d'ou un décalage qui devrait faire 0. Enfin, c'est ce qu'il y a marqué dans la spécif ecma-262 (page 52 de la spécification).

    Tu as fait un essai avec >>> -16, ça donne quoi? Par exemple sur 0 ou sur -2^31+1?

  5. #5
    Membre confirmé Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par défaut
    D'accord, voila donc un début d'explication.

    J'ai essayé :

    (Math.pow(-2, 31) + 1) >>> 16 : retourne 32768
    (Math.pow(-2, 31) + 1) >>> -16 : retourne 32768 (idem donc).

    Je fais des recherces sur la fameuse spécif ecma.

  6. #6
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par David.V
    Je fais des recherces sur la fameuse spécif ecma.
    http://www.ecma-international.org/pu...t/ECMA-262.pdf

    (page 52 de la spécification).

    Tu as l'algorithme selon lequel est sensé fonctionner >>>

  7. #7
    Membre confirmé Avatar de David.V
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2004
    Messages : 191
    Par défaut
    Vu merci

    Par contre, ça ne m'en apprend pas plus, c'est bien sommaire comme algo.

Discussions similaires

  1. Les meilleurs livres pour apprendre le JavaScript
    Par vermine dans le forum Livres
    Réponses: 23
    Dernier message: 10/06/2019, 18h58
  2. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  3. Construire chemin sur bouton avec évt Javascript
    Par Ph. B. dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/05/2003, 10h26
  4. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24
  5. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo