Partage
  • Partager sur Facebook
  • Partager sur Twitter

Combien pèse une lettre ?

En octets ^^

2 mars 2011 à 13:49:05

Bonjour, je suis en train d'apprendre les joies du binaire et ... comment ça je vis dans les années 80 ?

Bref ... Et donc je cherchais à comprendre comment nos chers ordinateurs étaient capables d'écrire des caractères typographiques juste avec des bits et je suis tombé sur l'explication qui dit que l'ordinateur (des années 80) traduisait/dessinait une lettre en affichant ou pas un pixels sur certaines cases d'un quadrillage de 64 cases. De cette façon, en considérant que "0" ou "1" équivaut à 1 bit :

A ------>
0 0 0 0 1 1 1 0
0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1
0 0 0 1 1 1 1 1
0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1

Ce qui revient à dessiner la lettre A en affichant/allumant les "1" et en éteignant les "0".
Sachant que "1" = 1 bit et "0"= 1 bit, on est tenté de penser que la lettre A pèse 64 bits soit 8 octets, non?

Pourtant, en binaire, écrire la lettre A revient à écrire : 01000001 qui est composé de 8 bits et pèse donc 1 seul octet.

Alors comment une lettre peut peser 1 octets soit 8 bits alors qu'il faut 64 bits (8 octets) pour la représenter ?

J'espère avoir été assez clair ^^.
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 13:52:27

Parce que nous ne sommes plus en 1980.
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 13:54:58

Il y a une différence entre stocker un texte et stocker les images qui vont servir a le représenter. Et puis actuellement, il s'agit plus d'equations parametriques qui représentent les lettres et permettent plusieurs polices d'ecriture et tailles de texte.
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 14:18:21

et donc quelle est cette fameuse différence ? Je précise que j'ai appris comment fonctionnait le code binaire hier ^^

en gros je cherche surtout a savoir quelles sont les caractéristiques graphiques (ex : position de point, orientation de droite, épaisseur etc etc) correspondantes au 0 et 1 contenu dans un octet tel que 01000001 qui compose une lettre comme A. C'est apparemment ce que tu appelles,CoreEngine, les "équations paramétriques" que j'aimerai connaitre et comprendre.

ou encore, savoir si l'ordinateur à en stock un panel d'image/lettre qu'il sort selon la touche pressée sur le clavier ou s'il construit/trace le graphisme de la lettre à chaque fois
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 14:24:08

Concretement, les lettres sont stockées sur un octet et au moment de l'affichage, l'ordi fait correspondre a chaque code de lettre son image, stockée ailleurs. Il n'a pas besoin de la recréer a chaque fois. C'est comme les jeux de coloriage ou tu met la bonne couleur selon le chiffre inscrit dans la zone.

Néanmoins, la création du graphisme de la lettre n'est plus du domaine du binaire, ça dépend de ce que tu veut savoir après. Je ne sais pas exactement comment fonctionne le systeme d'affichage de police de caractère, je sais qu'il s'agit de dessins vectoriels etirables a l'infini sans pixelliser, composés de formes simples (genre un cercle avec un certain rayon et un centre bien défini qui dépend de la taille de la police, et un rectangle tourné de 45° qui dépend aussi de la taille choisie de la police, et magie ça te fais un beau Q) mais après, dans le détail..
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 15:04:09

Ok donc ça c'est uniquement dans le cas de la typographie mais pour les images, c'est bien comme je l'ai affiché ?

Si quelqu'un a en stock une source qui pourrait relater le fonctionnement du tracé de typographie par ordinateur je suis preneur ^^
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 15:08:53

Ouais, pour les images ça marche comme ça sauf qu'il y a pas un bit par pixel mais 24 (en général), 8 par canaux de couleurs pour les nuances..
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 15:15:38

pour la typo, j'ai trouvé ceci, je comprends à peut prêt le principe mais vu que je ne suis pas matheux pour un sous c'est encore un peu confus
avec le lien c'est mieux http://www.genie-des-maths.polymtl.ca/exemple.php?no=82
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
2 mars 2011 à 15:45:58

Les images sont compressées (à part le BMP), soit sans perte de qualité (comme le PNG) soit avec (JPEG). Du coup ça prend bien moins de place que des pixels "bruts" stockés sans compression.
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 19:05:58

Bon après avoir exploré plusieurs recherches et réalisé une ré-interprétation du fonctionnement de l'affichage d'un caractère par un ordinateur (des années 80 ;) )

J'ai synthétisé sous forme de schéma simplifié le concept pour le communiquer au profane (tel que moi) :
Image utilisateur

Je profite donc du sujet pour vous laissez me dire si mon schéma est juste, clair et compréhensible pour que je le corrige par la suite si j'ai commis des erreurs.

  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 19:51:06

Salut
On peut considérer qu'un lettre pèse 1 octet en temps qu'information en transition dans les circuit.
On utilise actuellement le codage ascii ( un autre )
Sur ce tableaux, tu peut voir que la letre "a" prend la valeur 1en ordonnée et 6 en absisse donc 61 en hexadécimal ou 0110 0001 en binaire. On se retrouve avec une lettre codé sur un octet
Pour avoir des infos plus détaillées, n'hésite pas
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 20:00:34


Sympa comme tout ton schéma :)
Et oui, ça fonctionnait avant exactement comme ça .
  • Partager sur Facebook
  • Partager sur Twitter
2 mars 2011 à 20:20:16

@kev671 : il y a-t-il un endroit dans l'ordinateur ou est stocké de tableau ?

@walkyrie : merci pour le compliment et tant mieux si j'ai juste. Cela me permettra de finir ma synthèse.

mmmh à la 4eme étape de mon schéma, je pense qu'il y a un soucis en fait.
Un pixel est censé peser 24 bits/3 octets si je ne me trompe pas donc je ne devrais pas remplir les cases qui composent mon A avec des "0" et des "1"

J'ai donc modifié le schéma en conséquence.
Si vous souhaitez découvrir le nouveau schéma et l'article qui va avec je vous propose de suivre le lien suivant vers mon blog Comprendre un langage simple : L'ordinateur s'exprime en code binaire
  • Partager sur Facebook
  • Partager sur Twitter
3 mars 2011 à 15:27:03

A vrais dire, je n'en ai aucune idée.
Peut-etre avec les driver du clavier ou alors dans les fichier particulier à chaque police, dans le dossier Windows/font pour les windowsien.
A y repenser, cela ne doit peut etre pas etre géré avec l'OS car le BIOS est capable de comprendre des actions du clavier. A voir, donc, avec des personnes plus expérimentées dans le domaine.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
3 mars 2011 à 16:01:07

Voici ce qui se passe quand on appuie sur une touche sur un système moderne:
  • L'utilisateur appuie sur une touche de son clavier. Une interruptions est générée et un keycode correspondant à la position de la touche est placé dans un tampon matériel.
  • Le processeur saute sur la routine d'interruption.
  • La routine d'interruption aboutit d'une manière ou d'une autre à un pilote qui lit le tampon matériel et communique l'appui sur la touche au noyau du système.
  • Le noyau passe l'appui sur la touche à une couche de gestion comme Xorg ou est lui-même la couche de gestion.
  • La couche de gestion place l'évènement "Touche pressée" dans un tampon correspondant au programme auquel est destiné l'évènement.
  • Le programme lit son tampon d'évènements via du polling ou du waiting et réagit ou non à l'évènement reçu. Il peut également tenir compte de l'état des touches modificatrices (Shift, Caps. lock, Num. lock, etc.).
Le BIOS n'intervient que pour l'émulation de claviers PS/2 quand un clavier USB est utilisé et que le système ne supporte pas la norme USB (cas rare de nos jours).

-

Une police de caractères est un ensemble de fontes dessinées dans le même style. Une fonte est un ensemble de glyphes. Une fonte peut-être matricielle ou vectorielle. Dans une fonte matricielle, un glyphe est simplement une image. Dans une fonte vectorielle, un glyphe est un ensemble de courbes. Les fontes vectorielles ont l'avantage d'être redimensionnables sans artéfacts, ce qui n'est pas le cas des fontes matricielles.

Lorsqu'un programme veut rendre un caractère, il utilise généralement une bibliothèque telle que GDI (généralement utilisée sous Windows) ou FreeType (généralement utilisée sous GNU/Linux), demande à la bibliothèque de charger une fonte, et lui passe le numéro du glyphe à afficher. La bibliothèque rend ensuite le glyphe en utilisant l'image matricielle ou la description des courbes.

Comment faire la correspondance entre des données textuelles et les numéros des glyphes ? C'est ici que se produit le lien avec l'encodage des caractères ! Il existe énormément de normes différentes d'encodage des caractères. Je vais parler de deux d'entre elles.

L'ASCII est un encodage très simple, il y a 128 caractères définis, et à chacun est assigné un nombre. L'ASCII est codé sur 7-bits, mais on en rajoute en général un pour l'alignement, ce qui en fait 8. En ASCII, 1 caractère = 1 octet, c'est aussi simple que cela.
L'UTF-8 est un encodage un petit peu plus compliqué, mais pas tant que ça. L'UTF-8 est basé sur la liste de glyphes dénommée Unicode. L'UTF-8 utilise un codage où chaque caractère a une taille différente. Les premiers bits d'un caractère définissent sa taille, et un nombre minimal de bits est utilisé pour décrire un caractère. Par exemple, un numéro de glyphe inférieur à 128 est encodé sur 1 octet, et commence par un bit à 1. Un numéro de glyphe inférieur à 2048 est encodé sur 2 octets, le premier octet commençant par 110 et le second commençant par 10. Ensuite, à chaque fois que les bits disponibles ne sont plus suffisant pour encoder le numéro, on rajoute un 1 à l'avant, et on rajoute un octet commençant par 10. Ainsi, en UTF-8, A pèse un octet, mais é en pèse deux, et 私 en pèse trois. Avec ce système, UTF-8 possède la particularité d'être compatible avec ASCII pour les 128 premiers numéros de glyphe.

Désolé pour le pavé, j'ai essayé de faire aussi simple que possible. Il s'agit d'un sujet en apparence simple mais terriblement compliqué en réalité. :p

Ton schéma me semble très bon, il faudrait juste faire la distinction entre keycode (la touche du clavier) et numéro de glyphe ! Sinon, quelqu'un le lisant pourrait se demander "Mais, à quels caractères correspondent les touches Shift et Home par exemple ?!".
  • Partager sur Facebook
  • Partager sur Twitter
3 mars 2011 à 17:37:40

@1337833K : merci pour ton intervention, évidement tout ceci peut vite devenir complexe quand on se retrouve façon à toutes les possibilités et conditions qui s'entremêlent pour créer ces interactions :). Il y a d'ailleurs, plusieurs points que tu évoques et que j'ai omis volontairement pour ouvrir délicatement l'intérêt et la curiosité des profanes à la compréhension de ces notions. Je précise que je n'ai aucune connaissances en programmation (sauf en html mais bon ...) et que pour écrire cet article, il m'a fallu 2 jours de recherches pour avoir suffisamment d'éléments pour comprendre et traduire le fonctionnement du tout en un texte simplifié.

Sinon pour le côté keynote que tu as évoqué, j'avoue que je n'avais pas ces informations en mains mais je ne sais pas si c'est bien utile d'en parler car je ne parle que de lettre et d'image et pas de fonction. Cependant ce serait bien de rajouter quelques sources sur le sujet.
  • Partager sur Facebook
  • Partager sur Twitter