Nombres négatifs

Représentation des entiers négatifs

On aimerait voir comment sont codés les entiers naturels et négatifs "à l'intérieur de la machine"

On va utiliser une fonction de Python qui appliquée à un entier entre parenthèse donne sa représentation en octets, chaque octet codé en hexadécimal

Il s'agit de la fonction .to_bytes(....)

Regardons sur les trois exemples suivants

Dans le premier exemple elle donne le codage sur un octet de -1 on a reconnu 0xff c'est à dire 1111 1111

Dans le deuxième exemple elle donne le codage sur deux octets de -1 et on a que des 1 donc 0xffff c'est à dire 1111 1111 1111 1111

Dans le troisième exemple elle donne le codage de -8 sur 2 octets mais les deux octets cette fois ci ne sont plus identiques donc il faut préciser dans quelle ordre ils doivent être traités, voilà le paramètre byteorder doit être précisé

Il y a deux choix possibles soit byteorder="big" et l'ordre est "de la gauche vers la droite" soit byteorder="little" et l'ordre est "de la droite vers la gauche"

Pour éviter de retaper une commande "lourde" utiliser l'historique de l'interpréteur (touche UP)

Questions

  1. En utilisant la fonction to_bytes(....) vérifier les résultats de l'exercice 6, c'est à dire coder sur 2 octets , _1, puis -4, -15
  2. Donner le codage sur 2 octets de 2019
  3. Donner le codage sur 2 octets de -2019
  4. Vérifier à la main