• Aucun résultat trouvé

Travaux Dirig´es de programmation n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirig´es de programmation n"

Copied!
2
0
0

Texte intégral

(1)

Travaux Dirig´ es de programmation n

o

4

Cours de Programmation C

—L2.1—

x

Exercice 1. Op´ erateurs binaires

1. Donner la repr´ esentation en bits des deux variables suivantes : char a = 7;

char b = 25;

2. Ecrire les repr´ esentations de a&b, a|b, a

^

b et les valeurs correspondantes.

3. Effectuer lignes ` a lignes les op´ erations de la fonction suivante avec les variables a et b pr´ ec´ edentes et conclure sur ce que fait cette fonction.

void S(char *a, char *b) { (*a) = (*a)^(*b);

(*b) = (*a)^(*b);

(*a) = (*a)^(*b);

}

x

Exercice 2. Lecture et ´ ecriture bit ` a bit

On veut ` a pr´ esent lire et ´ ecrire des bits ´ a l’int´ erieur d’un octet. En language C, les octets sont repr´ esent´ es par des variables char, il n’y a pas de type sp´ ecifique pour les bits.

1. ´ Ecrire la fonction char recupereBitChar(char octet, char p) qui retourne le bit en position p dans octet. La valeur retourn´ ee est un char ´ egal ` a 1 ou 0. La position 0 correspond au bit de poids fort et 7 au bit de poids faible.

2. ´ Ecrire la fonction void placeBitChar1(char *octet, char p) qui force un bit 1 dans

*octet ` a la position p.

Exemple : Si *octet= 10110000 et p = 6, alors *octet doit ˆ etre modifi´ e en 10110100.

3. ´ Ecrire la fonction void placeBitChar0(char *octet, char p) qui force un bit 0 dans

*octet ` a la position p.

4. On souhaite compresser une liste d’entiers dont on sait les valeurs proches les unes des autres : plutˆ ot que de coder chaque entier s´ epar´ ement, on codera le premier entier puis les diff´ erences successives. Par exemple : 789 790 788 789 789 792 devient 789 +1 -2 +1 0 +3. Cette seconde liste sera cod´ ee par une liste de bits :

– 4 octets correspondants au premier entier

1

(2)

– 1 octet correspondant au nombre n de bits n´ ecessaires pour coder la valeur absolue maximale des diff´ erences.

– la liste des diff´ erences sur n+1 bits chacune (premier bit pour le signe puis n bits pour la valeur absolue).

Ainsi la liste pr´ ec´ edente devient :

00000000 00000000 00000011 00010101 00000010 0 01 1 10 0 01 0 00 0 11 Ecrire ´ la fonction size t compresse(int * valeurs, char * comp, int nbValeurs) qui compresse la liste valeur dans comp (suppos´ e de taille suffisante) et retourne le nombre d’octets utlisi´ es.

5. ´ Ecrire la fonction void decompresse(int * valeurs, char * comp, int nbValeurs)

2

Références

Documents relatifs

Le caractère illimité de la suite des nombres premiers est une

Par convention un entier naturel est appelé "bicolore" s’il est écrit exclusivement avec deux chiffres a et b distincts, a pair > 0 et b impair.. Q₁ Donner une

Q₁ Donner une suite strictement décroissante de dix entiers bicolores inférieurs à 10⁶ et divisibles respectivement par les puissances successives de 2: 2 à 2¹⁰.. Q₂ Montrer

permettant de calculer (éventuellement mentalement) le carré d’un entier dont l’écriture décimale se termine par un 5. Illustrons la démarche précédente à l’aide de

en 26 minutes, soit un gain d’environ 11 minutes par rapport au premier programme. On avance, le gain est conséquent mais, pour être critique, on ne peut pas dire que la division

Dans ce tableau, les produits des nombres doivent toujours être égaux sur chaque ligne, chaque colonne et chaque diagonale.. Calculatrice

Dans ce tableau, les produits des nombres doivent toujours être égaux sur chaque ligne, chaque colonne et chaque diagonale.. Calculatrice

[r]