Conversion bits

Hello à tous, je ne sais pas si mon sujet est bien placé, mais je ne savais pas vraiment ou le mettre. Voila ma question est bidon mais je ne sais pas comment resoudre mon probleme il faudrait que je donne la réprésentation du complément à 2 du nombre 157 sur 16 bits comment faire ? merci d'avance :)
Configuration: Windows XP
Firefox 2.0.0.9

15 réponses

  1. re :

    Le bit de débordement !

    Le registre est constitué d'un nombre fixe
    de bits, posons exemple un registre à 8 bits
    pour faire simple.

    RRHINZVC

    Réservé
    Réservé
    Halt
    Irq
    Négatif
    Zéro
    oVerflow
    Carrybit

    Or il suffit de vérifier ces états pour rendre
    compte du bit de débordement, en assembleur
    l'erreur n'est pas permise, il faut toujours
    contrôlé le programme.

    Le complément à 1 et à 2 sont des exemples
    mathématiques appliqués par des circuits
    logiques.

    Quelque soit le nombre de bits qui forment
    le registre, celui-ci prend ses informations
    sur chaque instructions du programme et
    réflête l'état du systême en tout temps.
    Le complément à 1 & à 2, sont codés
    dans l'architecture par des opérations
    d'algèbre de Bool (mathématicien), et
    c'est opérations réflêtent certains bits
    du registre d'états. Le processeur procure
    ainsi des instructions valide de branchement,
    ex.: bra, beq, bne, bcc, etc ...
    ( branche toujours, branche si égale, branche si non égale, branche si carry clear ...)

    Lupin
    0
    1. Bonjour,

      voilà, je suis d'accord.

      La conversion

      Voyons les choses plus globalement, le processeur est synchronisé sur un crystal pour connaître
      le point de départ ( start bit ), ensuite il envoie une série de bits, prenons par exemple la série
      suivante (une trame de bits) : 0000000000000000000100011110

      par regroupement binaire, on obtient :

      0000 0000 0000 0000 0000 1001 1110

      exprimons maintenant chaque groupe en base 10

      ...0......0......0......0......0......9.....14

      exprimons maintenant chaque groupe en base 16 ( utiliser la table fournit en message 10 )

      ...0......0......0......0......0......9......E

      16^6-16^5-16^4-16^3-16^2-16^1-16^0

      alors :

      E(16) * 16^0 = 14 (10)
      9(16) * 16^1 = 144(10)

      9E(16) = [ 14(10) + 144(10) ] = 158(10)

      Lupin
      0
      1. Contributeur
        bonsoir,

        petit complément: en cas de dépassement de capacité un des bit d'erreur du processeur (overflow error) se positionne et permet de gerer (si le programme l'a prévu) cette erreur.

        eric
        0
        1. re :

          c'est dans votre énoncé !

          " ... la représentation en base 2 de 2^16 - 1 sur 32 bits est tels bien ça ... "

          il est spécifié : [ 2^16 - 1 sur 32 bits ] et non [ 2^16 sur 32 bits ].

          "... la conversion de 9E(16) ... "
          Revoir votre formation sur les bases : http://membre.oricom.ca/lupin/images/lesbases.gif

          "... que se passe t il quand un processeur effectue un calcul dont le résultat dépasse ses capacités ..."

          ça je ne pourrais dire, ça dépend de l'erreur. J'ai vu les deux, le processeur planté, ou encore prit
          dans une boucle sans fin.

          Lupin
          0
          1. Et pourquoi on peut pas faire 2^16 = 0000 0000 0000 0001 0000 0000 0000 0000
            1 = 0000 0000 0000 0000 0000 0000 0000 0001
            complément a 1 = 1111 1111 1111 1111 1111 1111 1111 1110
            completment a 2 = 1111 1111 1111 1111 1111 1111 1111 1111

            et pour finir faire 0000 0000 0000 0001 0000 0000 0000 0000
            - 1111 1111 1111 1111 1111 1111 1111 1111
            ----------------------------------------------------------
            0000 0000 0000 0000 1111 1111 1111 1111

            ah bah si c'est la même chose donc ma méthode est valide ^^ Merchi

            Par contre je ne comprends pas la conversion de 9E(16)

            et pouver vous m'éclaircir aussi sur cette question que se passe t il quand un processeur effectue un calcul dont le résultat dépasse ses capacités ? s'il vous plait. merci d'avance (il plante ou il rame ? )
            0
            1. Bonjour,

              L'énoncé que vous avez présenté est :

              " ... la représentation en base 2 de 2^16 - 1 sur 32 bits est tels bien ça ... "

              j'en comprends que :

              2^16
              -
              1
              =
              représentation du résultat en base 2 sur 32 bits
              ------
              les puissances de base commencent à n^0 = 1

              32 positions, le 32ième bit étant 2^31, donc le
              premier selon notre mode de lecture (de gauche à droite)
              0000 0000 0000 0001 0000 0000 0000 0000

              2^16 = 65536
              d'ou
              65536 - 1 = 65535
              65535(10) = 0000 0000 0000 0000 1111 1111 1111 1111(2)
              ------

              L'intérêt du complément à 1 et à 2 est relativement simple !
              Ce n'est pas un hazard si nous choissisons de représenter des
              mots binaire par regroupement binaire de 4 bits, nous travaillons
              avec des octets qui renferme 8 bits !!!

              0000 0000 0000 0000 1111 1111 1111 1111
              00000000 00000000 11111111 11111111

              Circuit-Logique-101 (Collège de Sherbrooke/Québec/Canada)
              Un mathématicien à démontré qu'il était aiser de passer du binaire
              à l'hexadécimal par simple regroupement binaire de 4 bits.

              Il faut vraiment avoir codé en assembleur pour comprendre
              que lorsqu'il y a debordement du registre, les compléments 1 & 2
              permettent de retenir le bit du registre d'état du débordement.
              1111 1111 1111 1111 0000 0000 0000 0001
              .............................................................^
              si tu prends une lecture indirect sur 16 bits,
              tu récupère ainsi le bit de débordement avant
              qu'il ne surviennent.

              0000(2) = 0(16) = 0(10)
              0001(2) = 1(16) = 1(10)
              0010(2) = 2(16) = 2(10)
              0011(2) = 3(16) = 3(10)
              0100(2) = 4(16) = 4(10)
              0101(2) = 5(16) = 5(10)
              0110(2) = 6(16) = 6(10)
              0111(2) = 7(16) = 7(10)
              1000(2) = 8(16) = 8(10)
              1001(2) = 9(16) = 9(10)
              1010(2) = A(16) = 10(10)
              1011(2) = B(16) = 11(10)
              1100(2) = C(16) = 12(10)
              1101(2) = D(16) = 13(10)
              1110(2) = E(16) = 14(10)
              1111(2) = F(16) = 15(10)

              9E(16) = ( 9(10) * 16^1 ) + ( 14(10) * 16^0 )

              Lupin
              0
              1. Okiche merci pour vos info j'ai compris pour le 2^16 mais je ne comprends pas pour le -1 ? Pourquoi faire le complement à 1 puis à 2 de 2^16; je ne vois pas quand le -1 intervient ?

                Est-ce que vous pouvez m'aider aussi a resoudre ceci convertir le nombre 9E[16 en petit en bas ] en base 10 ?

                Merci pour votre aide je suis vraiment pas douée avec le binaire ...
                0
                1. re :

                  ah oui, je n'ai pas fait attention au [ -1 ], Manu a raison !

                  2^16 = 0000 0000 0000 0001 0000 0000 0000 0000

                  2^16 - 1 = 0000 0000 0000 0000 1111 1111 1111 1111

                  C 1 -> .....1111 1111 1111 1111 0000 0000 0000 0000

                  C 2 -> .....1111 1111 1111 1111 0000 0000 0000 0001

                  Lupin
                  0
                  1. Bonjour,

                    32 bits, donc de 2^16 correspond au 17è bit.

                    2^16-2^15-2^14-2^13-2^12-2^11-2^10-2^9-2^8-2^7-2^6-2^5-2^4-2^3-2^2-2^1-2^0
                    ..1...-..0...-..0...-..0...-..0...-..0...-..0...-..0..-.0..-.0..-.0..-..0..-..0..-.0..-.0..-..0..-..0..

                    10000000000000000

                    représenté sur 32 bits

                    00000000000000010000000000000000

                    complément à 1

                    11111111111111101111111111111111

                    complément à 2

                    +
                    00000000000000000000000000000001
                    =
                    11111111111111110000000000000000

                    Lupin
                    0
                    1. bonjour

                      " la représentation en base 2 de 2^16 - 1 sur 32 bits est tels bien ça

                      2^16 = 1000 0000 0000 0000 0000 0000 0000 0000"

                      Non cela c'est -2^31

                      2^16 - 1 c'est (sur 32 bits) 0000 0000 0000 0000 1111 1111 1111 1111

                      Manu
                      0
                      1. Merci pour cette aide précieuse mais j'ai encore deux trois doutes alors je me permets de vous poser ses questions pour avoir des confirmations

                        la représentation en base 2 de 2^16 - 1 sur 32 bits est tels bien ça

                        2^16 = 1000 0000 0000 0000 0000 0000 0000 0000
                        1 = 0000 0000 0000 0000 0000 0000 0000 0001

                        et donc complément à 1 cela donne 1111 1111 1111 1111 1111 1111 1111 1110
                        donc à 2 1111 1111 1111 1111 1111 1111 1111 1111
                        et en aditionnant on arrive à ( avec 1 en retenu ) 0111 1111 1111 1111 1111 1111 1111 1111

                        Est ce que cela est bon ?
                        merci d'avance
                        0
                        1. Contributeur
                          La logique négative... lointain souvenir aussi.
                          En tout cas merci de ta réponse
                          eric
                          0
                          1. Salut,

                            C'est loin aussi pour moi, mais enfin si l'on considère que dans la plupart des cas, la logique
                            négative réduit de moitié au minimum le nombre de portes pour une équation donnée (algèbre de bool),
                            on comprend facilement que la représentation négative d'un nombre est vital.

                            Et quelque soit la représentation utilisé, la machine elle ne comprends que le binaire !

                            Oui de mémoire je crois que le complément à 2 ne sert qu'a représenter les nombres négatifs.
                            Remarque, ma mémoire n'est pas infaible !

                            @+
                            Lupin
                            0
                            1. Contributeur
                              Bonsoir,

                              Lupin tu m'as rafraichi un peu la mémoire mais mes (lointains) souvenirs m'amène une petite interrogation...
                              Le complément à 2 ce n'est pas pour représenter les nombres négatifs uniquement ?
                              Sans doute c'est sous-entendu dans la question remarque, sinon plus trop d'interet
                              eric
                              0
                              1. Bonjour,

                                157 (10) représenté sur 16 bits

                                0000000010011101(2) = 157 (10)

                                Le complément à 1 :
                                (inversion des bits)
                                1111111101100010

                                Le complément à 2 : -> Complément à 1 + 1

                                1111111101100010
                                0000000000000001
                                ------------
                                1111111101100011

                                Lupin
                                1
                                1. c sa exactement !
                                  0