Exercices sur la représentation des données

N.B. Les indices à la fin des nombres représente leur numération quand elle n'est pas décimale : 2 pour binaire, 8 pour octale et 16 pour hexadécimal.

1. Pour chacun des entiers naturels suivants donner leurs numérations binaires, octales, décimales et hexadécimales manquantes. 32, 111, 126, 127, 128, 200, 255, 256, 32655, 32656, 1112, 1010102, 10000002, 10010012, 98, 1118, 1278, A16, F16, 8016, FF16, ABC16, 11116, FFF16, 4FA416, 10000016.

2. Donner les écritures binaires puis hexadécimales des nombres décimaux suivants. 64,25  ; 15,125  ; 8,1875  ; 0,4.

3. Donner la représentation binaire en complément à 1 sur 16 bits des entiers en écriture décimale suivants. −32768, −32767, −256, −255, −111, −32, −1, 0, +22, +32, +111, +255, +256, +32767, 32768.

4. Effectuer les opérations suivantes en utilisant la représentation binaire en complément à 1 sur 8 bits des entiers concernés. 22+111, 22+(−111), 111+(−22), 32+(−32).

5. Donner, en numération hexadécimale, la représentation des réels suivants en IEEE-754 simple précision (1+8+23=32 bit). 0,125   3,25  ; 4,3125   8,1875   10  ; 0,1  ; 0,4.
Même question pour les opposés de ces nombres.

6. Ecrire un programme qui donne la représentation en base n d'un entier naturel. La commande du programme sera de la forme representerm entierpm est la numération de départ et m la numération à utiliser pour le résultat, avec m et n dans {2,10,16}.

7. Que fait le programme C suivant ?
#include <stdio.h>
main() {
  float f=4.25;
  unsigned int x;
  printf("sizeof(float)=%d sizeof(int)=%d\n",sizeof(float),sizeof(int));
  x=*((unsigned int *) (&f));
printf("%f <=> 0x%x\n",f,x);
}


8. Ecrire un programme qui donne, en numération hexadécimale, la représentation d'un réels codé en IEEE-754 simple précision.

9. Donner la représentation en utf-8 et en utf-16 des caractères suivants. LF ('\0' en C), espace, '1', 'A', 'z'.
10. Donner la représentation en utf-8 et en utf-16 des caractères suivants dont on donne le point de code Unicode. 008016, 00F016, 00FF16, 026016, 044016.

11. Ecrire un programme qui affiche en utilisant UTF-8 un caractère dont on donne le point de code Unicode. Le point de code sera donné sous la forme U+xyzt avec quatre chiffres hexadécimaux.