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

Algorithmes et structures de données Discussion :

Question sur le binaire


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    383
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 383
    Par défaut Question sur le binaire
    On prend un chiffre en binaire qui se termine par 1.
    ex : 111
    tant que on a pas un chiffre sous la forme 1(01).. (c'est à dire un chiffre qui n'a pas deux 0 ni deux 1 qui se suivent, il faut qu'ils soient toujours en alternance) :
    - on rajoute son double (ex : + 1110 On obtient 10101)
    - on rajoute 1 et on ignore tous les 0 éventuels à droite (ex : 10101+1=10110 - > 1011)
    fin tant que.

    est ce qu'on peut etre sur que le programme plante pas ? Comment ?

    Edit : et s'il plante, pour quelles valeurs et comment les connaitre ?

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    à priori ...

    Planter, pourquoi pas si le résultat par exemple augmente (ou diminue) constamment
    et dépasse les capacités sur les nombres à un moment donné !?

    ou encore boucler à l'infini ?
    Tant que on a pas un chiffre sous la forme 1(01
    possible ...

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    Citation Envoyé par virginieh Voir le message
    - on rajoute son double (ex : + 1110 On obtient 10101)
    en arithmétique binaire cela s'appelle faire un décalage ou une rotation dans l'un des cas on garde le bit que l'on décale à droite ou à gauche dans l'autre cas non
    Citation Envoyé par virginieh Voir le message
    est ce qu'on peut etre sur que le programme plante pas ? Comment ?
    cette question n'a aucun sens...l'arithmétique binaire est destinée à être comprise par le microprocesseur ( ou autre circuit logique/intégré)

    Dans un microprocesseur comme le x86 d'Intel 16bits les bits sont adressés par le bus qui va de la mémoire au microprocesseur par paquets de 8bits bref en 2 temps si je ne m'abuse ( bref ça doit faire 2 cycles de processeur...)
    Pour ce qui est de la génération suivante les 32 et 64 je pense que ça doit être un adressage directement en 32 et 64 donc

    Maintenant le microprocesseur il est tout bête il fait ce que l'on lui dit de faire: si tu veux faire une division d'un certain nombre par zéro, le CPU va faire la division par zéro par contre il y a un registre d'état spécial dans le cPU pour ça qui va être mis à 1, le zero flag.


    Ensuite si tu fais des opérations sur une valeur de 255 bits soit un octet et que tu dépasses par programmation sans contrôle cette valeur, le CPU il va faire bêtement une "complémentation" c.a.d. que 256 n'existera pas ça sera soit 0 soit 255..

    C'est pareil pour la division de capacité, il y a un registre d'état spécial le overflow flag
    https://en.wikipedia.org/wiki/Overflow_flag

    Ensuite le CPU,je reviens à ce que j'ai écris il ne sait absolument rien de ce qu'il va chercher en mémoire cela a beau être un programme en .NET ou Java, ou C++, Word,Excel,un navigateur internet ou un ERP il ne sait rien de tout cela...
    donc il fait bêtement ce que l'on dit de faire.
    Pour ce qui est des interruptions matérielles c'est la même chose..

    Citation Envoyé par virginieh Voir le message
    Edit : et s'il plante, pour quelles valeurs et comment les connaitre ?
    l'arithmétique binaire n'est pas destinée à gérer les plantages encore une fois; l'arithmétique binaire elle est conçue pour faire fonctionner le microprocesseur, à savoir lire ,adresser la mémoire,gérer les interruptions matérielles comme la gestion du clavier,la vidéo...
    maintenant comme je viens de l'écrire il y a quelques registres comme la division par zéro ,le dépassement de capacité d'une opération.

    Le CPU est un circuit intégré qui tourne toujours tant qu'il est alimenté électriquement

    Ensuite il se peut qu'il y ait des instructions rajoutées au jeu d'instruction des CPU qui permettent de savoir si le CPU a effectué des opérations illogiques
    https://en.wikipedia.org/wiki/X86_instruction_listings


    Ensuite la gestion des plantages ça vient d'une couche moins "bas-niveau" l'OS est là pour gérer les plantages en principe
    Sous Windows il y a des API sensées gérer les exceptions.

    Au niveau couche programme applicatif par exemple sous Java ou C++ il y a aussi des classes permettant de gérer les exceptions

    Si tu veux gérer des exceptions hardwares je pense qu'il faut écrire un device driver pour ça c'est à dire un module qui se charge entre le hardware et l'OS
    Mais c'est totalement inutile les exceptions hardwares sont gérées en principe par les OS

Discussions similaires

  1. question bête sur les binaires
    Par ben_skywalker dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 11h29
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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