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

Categories:Leçons

1) Écriture d’un entier positif dans une base b ⩾ 2

Test de scripts :

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)

Expliquez le résultat de l’opération ci-dessous :

a=0x1f+0b1100
print(a)

0b1100 correspond à 12 tandis que 0x1f correspond à 31.

Lorqu’on additionne les deux cela nous donne 43.

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:])

Testez la fonction ci-dessous puis expliquez :

def binaire(n):
           q=n
           bin=''
           while q!=0:
                      r=q%2
                      q=q//2
                      bin=str(r)+bin
           return bin
  • On définit une fonction ‘binaire’
  • On attribue n à q
  • On attribue ‘ ‘ à bin
  • Tant que q est différent de 0 :
    • r= le reste de la division de q par 2
    • q= la division entière de q par 2
    • bin est égal à r (chaine de caractères) + bin
  • renvoyer bin
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.

Addition de nombres binaires :

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

Soit 51 + 28 = 79

Une autre addition :

(10110011)2+ (01011100 )2
= (100001111)2

Soit 179 + 92 = 271

Les couleurs en héxadécimal :

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 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)

2 – 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

(00101101)2

  • Inverser les bits

(11010010)2

  • Ajouter 1

(11010011)2

  • Additionner en binaire le nombre obtenu et son complément à 2

  • Conclure

Aucune réponse

Laisser un commentaire

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