valeur les calculs suivants sont souvent faussés.
Vu le nombre de manipulations pour arriver à gérer les nombres réels, leur manipulation par le microprocesseur est
plus lente qu’avec des nombres entiers. Heureusement, à côté, puis dans les microprocesseurs sont apparus des
composants supplémentaires appelés FPU, Flotting Point Unit, dont le but est de pouvoir manipuler directement les
nombres et les fonctions mathématiques associées, accélérant fortement le traitement des données. Peutêtre avezvous entendu parler des processeurs Intel 386 qui équipaient les PC vers 1990. Un coprocesseur mathématique
appelé 80387 pouvait souvent être ajouté pour accélérer les opérations. Même les ordinateurs personnels de type
Atari ST pouvaient se voir ajouter un coprocesseur de ce type (68881). Aujourd’hui ces coprocesseurs n’en sont plus :
ils sont directement intégrés dans le microprocesseur. Le dernier Pentium ou Athlon de votre PC en contient.
3. Les dates
Les dates sont représentées de deux manières dans l’ordinateur. La première est le format BCD vu précédemment, et
ceci presque exclusivement dans le bios (setup) de votre ordinateur, pour des raisons historiques. Le second est le
timestamp Unix, qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit pile UTC. Cette
date a été retenue car bien que l’idée d’Unix soit apparue en 1969, l’ère d’Unix (arrivée de la première version et
expansion) débute dans les années 1970.
Le 11 avril 2007 à 21 heures, 24 minutes et 43 secondes, le timestamp Unix est de 1176319483 secondes.
Le timestamp est généralement codé sur un entier de 32 bits signé. S’il est négatif, il représente une date d’avant
1970, s’il est positif une date suivante. Il couvre une plage de 136 ans, du 13 décembre 1901 20 heures 45 minutes 52
secondes jusqu’au 19 janvier 2038, 3 heures 14 minutes 8 secondes. Passée cette date, que se passeratil ? Tous les
systèmes d’exploitation ou les ordinateurs n’ayant pas prévu ce problème rencontreront un magistral bug digne de
celui de l’an 2000, ou pire : le bug de l’an 2000 (qui n’a pas eu lieu, ou peu, malgré les prédictions catastrophiques)
était essentiellement logiciel, le timestamp est défini au sein du système d’exploitation.
Alors que faire ? Déjà, il reste une trentaine d’années pour modifier la chose, et c’est bien souvent déjà fait. Unix a été
conçu il y a bientôt 40 ans et est toujours extrêmement utilisé. Il est fort probable que d’ici 30 ans, lui ou l’un de ses
dérivés le soit encore. C’est un système d’exploitation qui a fait ses preuves. Or les technologies évoluent et les
ordinateurs actuels manipulent sans difficulté des nombres de 64 bits. Un timestamp signé sur 64 bits permet de
représenter des dates de l’époque où l’univers tel que nous le connaissons n’existait pas, et dans le futur, une période
où notre Soleil n’existera plus depuis bien longtemps... Il suffit donc de passer le timestamp sur 64 bits, et sachant qu’il
existe un type timestamp en programmation, de recompiler tous les programmes. Il n’y a donc aucun souci à se faire.
4. Les caractères
Les caractères sont habituellement codés sur 8 bits, soit un octet, en utilisant la table ASCII. Dans cette table, les 128
premières valeurs ne représentent pas que les caractères pour les anglais mais aussi divers codes non affichables
utilisés pour contrôler l’affichage d’un terminal. Les caractères de 0 à 31 vont contenir des choses comme les retour
chariot, le passage à la ligne, la tabulation, etc. Le caractère 32 est l’espace, le 127 le caractère de suppression. Le "A"
en majuscule démarre à 65, en minuscule à 97, les chiffres en partant de 0 à 48. Le reste est la ponctuation, divers
signes comme les symboles monétaires, les opérateurs et comparateurs arithmétiques, et ainsi de suite. Typiquement,
la chaîne "Hello World!" est représentée ainsi.
Les caractères d’une même chaîne occupent tous des cases mémoires contiguës. L’ordinateur ou plutôt les langages
utilisant les chaînes de caractères doivent savoir où celleci commence (c’est indiqué en interne par la variable ellemême) et où elle finit. C’est le caractère spécial de code 0, représentant un caractère vide, qui indique une fin de
chaîne. Quand l’ordinateur doit récupérer une chaîne, il lit tous les caractères contigus jusqu’à ce qu’il trouve le
caractère vide de code 0.
Les 128 caractères suivants représentent l’ASCII étendu, permettant de coder les caractères semigraphiques qui
étaient couramment utilisés sur les terminaux : traits horizontaux, verticaux, angles, etc, mais aussi les caractères
propres à chaque pays. Ces 128 caractères sont placés au sein de pages de codes, dont la plupart sont normalisées.
Quand on change de pays, on change de page de code. Ce système présente cependant deux inconvénients :
q Les fichiers textes et les noms de fichiers écrits dans d’autres langues que l’anglais ne seront pas interprétés
correctement sur les systèmes n’utilisant pas la même page de code. Typiquement, si vous utilisez une page de
code norvégienne sur des fichiers en français, vous obtiendrez des caractères surprenants.
q Les 128 octets ne suffisent pas toujours à coder tous les caractères d’une langue particulière, par exemple
tous les idéogrammes chinois ou japonais. Dans ce cas, l’alphabet de ces langues est restreint, ou les gens
natifs de ces pays (et d’autres) doivent utiliser plusieurs pages de code, ou passer par des logiciels et
Code ASCII
72
101
108
108
111
32
87
111
114
108
100
33
Caractère
H
e
l
l
o
W
o
r
l
d
!
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
44
Vu le nombre de manipulations pour arriver à gérer les nombres réels, leur manipulation par le microprocesseur est
plus lente qu’avec des nombres entiers. Heureusement, à côté, puis dans les microprocesseurs sont apparus des
composants supplémentaires appelés FPU, Flotting Point Unit, dont le but est de pouvoir manipuler directement les
nombres et les fonctions mathématiques associées, accélérant fortement le traitement des données. Peutêtre avezvous entendu parler des processeurs Intel 386 qui équipaient les PC vers 1990. Un coprocesseur mathématique
appelé 80387 pouvait souvent être ajouté pour accélérer les opérations. Même les ordinateurs personnels de type
Atari ST pouvaient se voir ajouter un coprocesseur de ce type (68881). Aujourd’hui ces coprocesseurs n’en sont plus :
ils sont directement intégrés dans le microprocesseur. Le dernier Pentium ou Athlon de votre PC en contient.
3. Les dates
Les dates sont représentées de deux manières dans l’ordinateur. La première est le format BCD vu précédemment, et
ceci presque exclusivement dans le bios (setup) de votre ordinateur, pour des raisons historiques. Le second est le
timestamp Unix, qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit pile UTC. Cette
date a été retenue car bien que l’idée d’Unix soit apparue en 1969, l’ère d’Unix (arrivée de la première version et
expansion) débute dans les années 1970.
Le 11 avril 2007 à 21 heures, 24 minutes et 43 secondes, le timestamp Unix est de 1176319483 secondes.
Le timestamp est généralement codé sur un entier de 32 bits signé. S’il est négatif, il représente une date d’avant
1970, s’il est positif une date suivante. Il couvre une plage de 136 ans, du 13 décembre 1901 20 heures 45 minutes 52
secondes jusqu’au 19 janvier 2038, 3 heures 14 minutes 8 secondes. Passée cette date, que se passeratil ? Tous les
systèmes d’exploitation ou les ordinateurs n’ayant pas prévu ce problème rencontreront un magistral bug digne de
celui de l’an 2000, ou pire : le bug de l’an 2000 (qui n’a pas eu lieu, ou peu, malgré les prédictions catastrophiques)
était essentiellement logiciel, le timestamp est défini au sein du système d’exploitation.
Alors que faire ? Déjà, il reste une trentaine d’années pour modifier la chose, et c’est bien souvent déjà fait. Unix a été
conçu il y a bientôt 40 ans et est toujours extrêmement utilisé. Il est fort probable que d’ici 30 ans, lui ou l’un de ses
dérivés le soit encore. C’est un système d’exploitation qui a fait ses preuves. Or les technologies évoluent et les
ordinateurs actuels manipulent sans difficulté des nombres de 64 bits. Un timestamp signé sur 64 bits permet de
représenter des dates de l’époque où l’univers tel que nous le connaissons n’existait pas, et dans le futur, une période
où notre Soleil n’existera plus depuis bien longtemps... Il suffit donc de passer le timestamp sur 64 bits, et sachant qu’il
existe un type timestamp en programmation, de recompiler tous les programmes. Il n’y a donc aucun souci à se faire.
4. Les caractères
Les caractères sont habituellement codés sur 8 bits, soit un octet, en utilisant la table ASCII. Dans cette table, les 128
premières valeurs ne représentent pas que les caractères pour les anglais mais aussi divers codes non affichables
utilisés pour contrôler l’affichage d’un terminal. Les caractères de 0 à 31 vont contenir des choses comme les retour
chariot, le passage à la ligne, la tabulation, etc. Le caractère 32 est l’espace, le 127 le caractère de suppression. Le "A"
en majuscule démarre à 65, en minuscule à 97, les chiffres en partant de 0 à 48. Le reste est la ponctuation, divers
signes comme les symboles monétaires, les opérateurs et comparateurs arithmétiques, et ainsi de suite. Typiquement,
la chaîne "Hello World!" est représentée ainsi.
Les caractères d’une même chaîne occupent tous des cases mémoires contiguës. L’ordinateur ou plutôt les langages
utilisant les chaînes de caractères doivent savoir où celleci commence (c’est indiqué en interne par la variable ellemême) et où elle finit. C’est le caractère spécial de code 0, représentant un caractère vide, qui indique une fin de
chaîne. Quand l’ordinateur doit récupérer une chaîne, il lit tous les caractères contigus jusqu’à ce qu’il trouve le
caractère vide de code 0.
Les 128 caractères suivants représentent l’ASCII étendu, permettant de coder les caractères semigraphiques qui
étaient couramment utilisés sur les terminaux : traits horizontaux, verticaux, angles, etc, mais aussi les caractères
propres à chaque pays. Ces 128 caractères sont placés au sein de pages de codes, dont la plupart sont normalisées.
Quand on change de pays, on change de page de code. Ce système présente cependant deux inconvénients :
q Les fichiers textes et les noms de fichiers écrits dans d’autres langues que l’anglais ne seront pas interprétés
correctement sur les systèmes n’utilisant pas la même page de code. Typiquement, si vous utilisez une page de
code norvégienne sur des fichiers en français, vous obtiendrez des caractères surprenants.
q Les 128 octets ne suffisent pas toujours à coder tous les caractères d’une langue particulière, par exemple
tous les idéogrammes chinois ou japonais. Dans ce cas, l’alphabet de ces langues est restreint, ou les gens
natifs de ces pays (et d’autres) doivent utiliser plusieurs pages de code, ou passer par des logiciels et
Code ASCII
72
101
108
108
111
32
87
111
114
108
100
33
Caractère
H
e
l
l
o
W
o
r
l
d
!
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
44
