Représentation des données : types et valeurs de base 😎

I – Écriture d’un entier positif dans une base b ⩾ 2

Scripts Python à tester : https://colab.research.google.com/drive/1R8iAxtC0Ol7CclS74TC-7GY9yv51o4hR

Conversion d’un nombre en base 2 avec la fonction bin() :

nombre=21
bin(nombre)
Python interprète les nombres commençant par 0b comme des nombres binaires
a=0b1100
print(a)

Conversion d’un nombre en base 16 avec la fonction hex() :

a=31
nombre=hex(a)
print(nombre)
a=0x1F
print(a)
a=0x1f+0b1100
print(a)

On trouve 43 car 0*1f = 31 en hexadécimal et 0b1100 = 12 en binaire.

**Convertisseur en base 2 et 16** :

nombre=int(input("entier en base 10 : "))
print("en base 2 : "+ str(bin(nombre))[2:])
print("en base 16 : "+ str(hex(nombre))[2:])
def binaire(n):
           q=n
           bin=''
           while q!=0:
                      r=q%2
                      q=q//2
                      bin=str(r)+bin
           return bin
  • on attribue n à q
  • on attribue ‘ ‘ à bin
  • tant que q est différent de 0 :
    • r est égal au quotient de q/2
    • q est égal à la division euclidienne de q/2
    • bin est égal à r (chaîne de caractère) + bin
  • renvoyer bin

==> ce qui permet donc de donner n’importe quelle valeur en binaire

a=124
nombre=binaire(a)
print(nombre)

Quel est le plus grand entier naturel codé sur 8 bits ?

n=0b11111111
print(n)

On peut coder 256 entiers sur 8 bits.

Soit 255 +1 pour le 0.

Ou 2^8.

Conversion base b base 10 :

def mystere(x,b=2):
  u = 0
  for a in x:
    u = b * u + int(a)
  return u
a=base10("11001")
print(a)
a=base10("11001",2)
print(a)
a=base10("11001",10)
print(a)

__________________________________________________________________________________

Combien dénombrez-vous d’animaux ?

L’attribut alt de cette image est vide, son nom de fichier est animaux.png.

Notre réponse est 18 en représentation décimale.

On peut préciser si nécessaire : (18)10

On peut écrire des représentations différentes du même nombre d’animaux : (18)10= (00010010)2= (12)16= (22)8

Avec la calculatrice de Windows 10 en mode programmeur. l’écriture binaire a été complétée avec des « zéros » à gauche pour avoir un codage sur 8 bits.

Pour représenter un nombre n en base 10, on doit utiliser 10 caractères différents pour représenter les 10 premiers entiers : 0 1 2 3 4 5 6 7 8 9, et décomposer les entiers suivants à l’aide des puissances de 10 successives.
Par exemple, 19 représente le nombre 1 × 101 + 9 × 100

En base 2 (binaire) on a 2 symboles 0 et 1.

En base 16 (hexadécimal) on 16 symboles : 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F

La valeur de A est 10 et F est 15.

_________________________________________________________________________________

Un entier naturel est un entier positif ou nul. Pour coder des nombres entiers naturels compris entre 0 et 255, il nous suffira de 8 bits (un octet) . D’une manière générale un codage sur n bits pourra permettre de représenter des nombres entiers naturels compris entre 0 et 2n-1 .

Chacun des nombres 0 ou 1 de l’écriture binaire est appelé bit.

Il est nécessaire de fixer la taille de cette suite finie de bits pour coder les entiers naturels en machine.

Lorsque les nombres sont représentés par plusieurs octets, la machine doit fixer l’ordre en mémoire de ces octets. On parle de boutisme (ou « endianness » en anglais). La mémoire des ordinateurs est divisées en blocs de 8 bits (soit un octet). Un processeur 64 bits par exemple manipule des paquets de 8 octets, soit 64 bits .

Dans une base b, on utilise b symboles distincts pour représenter les nombres. La valeur de chaque symbole doit être strictement inférieur à b.

_________________________________________________________________________________

Effectuer cette addition de deux nombres binaires codés sur 8 bits sans faire de conversion. Vérifier le résultat obtenu en effectuant les conversions.

   (00110011)2+ (00011100)2

==> (01001111) 2 = 79

51 + 28 = 79

Recommencer avec cette nouvelle addition.

(10110011)2+ (01011100 )2

==> (100001111) 2 = 271

92 + 179 =271

Codage des couleurs en HTML :

https://colab.research.google.com/drive/1glD7Mm9HYurOvQTzYXJ5lpi7bPi_fY1N

1 – Construire un dictionnaire qui attribue les valeurs aux symboles hexadécimaux

‘Un triplet hexadécimal est un nombre hexadécimal à 6 chiffres mémorisé sur trois octets utilisé en HTML et dans les feuilles de style en cascade (CSS), et d’autres applications, pour représenter les couleurs. Les octets représentent les composantes rouge, vert et bleu de la couleur.

Un octet représente l’intervalle entre 00 et FF (en notation hexadécimale), ou 0 à 255 en notation décimale. Le triplet hexadécimal est formé par la concaténation de trois octets en notation hexadécimale, dans l’ordre rouge-vert-bleu. Les trois groupes de deux chiffres hexadécimaux se suivent sans espace après un croisillona. Les zéros initiaux, non significatifs, doivent figurer, pour garder le nombre de chiffres dans les triplets égal à six.

Par exemple, le triplet 0,1,2 devrait être représenté par le code #000102′

2 – Ecrire une fonction permettant de trouver la représentation RGB d’une couleur à partir de la représentation hexadécimale.

Effectuez un test avec la couleur lightsalmon ci-dessous.

https://www.w3schools.com/colors/colors_picker.asp

Corrigé :

#construction d'un dictionnaire
s = '0123456789ABCDEF'
dic = {}
for i in range(16):
    dic[s[i]] = i
print(dic)
lightsalmon="#FFA07A"
#convertisseur
def color_rgb(color_hexa):
    red=color_hexa[1:3]
    R=dic[red[0]]*16+dic[red[1]]

    green=color_hexa[3:5]
    G=dic[green[0]]*16+dic[green[1]]

    blue=color_hexa[5:7]
    B=dic[blue[0]]*16+dic[blue[1]]
    return(R,G,B)
#test
color_rgb(lightsalmon)

II – Représentation binaire d’un entier relatif

Le complément à deux est une technique qui consiste à inverser tout les bits de la représentation binaire d’un nombre entier puis à rajouter 1 pour obtenir la représentation binaire de l’entier relatif opposé.

  • Ecrire 45 en binaire –> 0b101101
  • Inverser les bits –> 010010
  • Ajouter 1 –> 010011
  • Additionner en binaire le nombre obtenu et son complément à 2 –> 010011 + 101100 + 000001
  • Conclure –> cela donne le nombre négatif

Complément à 2 –> inverser les bits et ajouter 1

Avec la méthode du complément à 2 pour un codage sur n bits, on dispose d’une représentations des entiers relatifs dans l’intervalle [-2n-1,2n-1-1].

Le complément à 2 de 0 sert à représenter -2n-1 .

Ainsi sur 8 bits, on dispose des représentations des entiers compris entre -128 et 127.

• le signe d’un entier en machine est connu grâce à son bit de poids fort
• l’unicité de la représentation de nombre compris entre -2n-1 et 2n-1-1 ;
• l’addition des entiers relatifs en complément à deux utilise le même
algorithme que pour les entiers naturels.

Comment est représenté -128 codé sur 8 bits ?

3) Représentation approximative des nombres réels

Un nombre réel est constitué de deux parties : la partie entière et la partie fractionnelle (les deux parties sont séparées par une virgule).

Il existe deux méthodes pour représenter les nombre réel :

1. Virgule fixe ou la position de la virgule est fixe ;

2. Virgule flottante : la position de la virgule change ( dynamique )

Dans la représentation en virgule fixe les valeurs sont limitées et nous n’avons pas une grande précision .

En python les nombres réels sont représentés par des nombres en virgule flottante de type float.

  • écrire -3,3125 en binaire ==>
  • écrire 0,25 , 1/3 puis 0.1 en binaire ==>

corrigé :

http://yb-isn.fr/nsi-2020/wp-content/uploads/2020/12/Nombre-1.pdf

Aucune réponse

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *