Question Licence informatique

Discutez d'informatique ici !
joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 14 Nov 2013, 21:52

lulubibi28 a écrit:ok!

donc par ex :
2002 base 10 pour devenir en base 16, je dois faire la même chose :hein: ?
Oui, sauf à avoir une calculette qui le fait la conversion automatiquement

Avant tu as fais comme une décomposition en puissance 2 pour trouver 11 et 2 , non ? :hum:
Je ne comprends pas ce que tu veux dire :hein:



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21701
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 15 Nov 2013, 03:58

Le principe le plus fréquemment employés pour convertir de la base 10 vers la base 16 et celui consistant à faire des divisions (avec reste) par 16.

En base 10 (donc la base "de tout les jours", si tu divise 473 par 10, il y va 47 fois et le reste est 3.
Ensuite, si tu divise 47 par 10, il y va 4 fois et il reste 7.

Exactement de la même façon, le nombre A3F en base 16, si je le divise par 10 en base 16 (c'est à dire en fait par 16), il y va A3 fois et il reste F (tout en bases 16).

Ca permet de trouver les chiffres qui forment le nombre en commençant par le fin :
2002 divisé par 16 : il y va 125 fois et il reste 2 -> le dernier chiffre en base 16 sera un 2
125 divisé par 16 : il y va 7 fois et il reste 13 -> l'avant dernier chiffre sera un 'D' (A=10, B=11, C=12, D=13, E=14, F=15)
Et c'est fini vu que 7<16
Le nombre 2002(base dix) s'écrit 7D2

Vérif : 7*16² + 13*16 + 2 = 2002
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 15 Nov 2013, 12:39

Ben314 a écrit:Le principe le plus fréquemment employés pour convertir de la base 10 vers la base 16 et celui consistant à faire des divisions (avec reste) par 16.

En base 10 (donc la base "de tout les jours", si tu divise 473 par 10, il y va 47 fois et le reste est 3.
Ensuite, si tu divise 47 par 10, il y va 4 fois et il reste 7.

Exactement de la même façon, le nombre A3F en base 16, si je le divise par 10 en base 16 (c'est à dire en fait par 16), il y va A3 fois et il reste F (tout en bases 16).

Ca permet de trouver les chiffres qui forment le nombre en commençant par le fin :
2002 divisé par 16 : il y va 125 fois et il reste 2 -> le dernier chiffre en base 16 sera un 2
125 divisé par 16 : il y va 7 fois et il reste 13 -> l'avant dernier chiffre sera un 'D' (A=10, B=11, C=12, D=13, E=14, F=15)
Et c'est fini vu que 7<16
Le nombre 2002(base dix) s'écrit 7D2

Vérif : 7*16² + 13*16 + 2 = 2002



Super , j'ai compris pour l'exemple de 2002 base 10 !Merci pour l'explication ^^

Mais pour le nombre A3F et 473 , j'ai pas compris du tout, je sais en utilisant la calculette(souvent certains profs l'interdisent) on peut trouver facilement ! Logiquement le nombre A3F est en base 16 , mais l'objectif est de le trouver en quelle base ?
A3F implique que A=10, 3 , F=15

En fait le truc que j'ai pas aussi saisi c quand on dit un nombre entier indice base 10 ?

ex : A3F indice base 10 , et on le veut en base 16 !

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 15 Nov 2013, 13:54

A n'existe pas en base 10.
en base 10, tu as dix caracteres:
0...9

ecrire A en base 10 n'a aucun sens.
la vie est une fête :)

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 15 Nov 2013, 13:59

ok! c'est vrai c logique ^^

Mais A3F indice base 10 , est-ce que çà existe ?

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 15 Nov 2013, 14:04


A n'existe pas en base 10.
ecrire A en base 10 n'a aucun sens.

........................
la vie est une fête :)

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 15 Nov 2013, 14:06

fatal_error a écrit:........................

OK!
Mais A3F base 16 , et on veut en base 10 et 2 ?

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 15:31

par joel76 » 15 Nov 2013, 14:08

En général on passe par la base 10 pour ensuite convertir en base 2.

Maintenant, si le coeur t'en dis, en base 2 on aurait



Ce qui fait



PS : la difficulté de ce genre de conversion rapide est qu'il faut écrire les tables d'addition et multiplication dans la base d'arrivée. En base 2 c'est pas trop comliqué mais dans d'autre bases c'est nettement plus long.

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 17 Nov 2013, 14:53

Merci pour l'explication !

Petite question :zen:

A l’aide de deux octets on peut représenter tous les nombres entiers
compris entre -32768 et 32767
il suffit de réserver le bit le plus à gauche pour indiquer le signe!

A quoi servent les chiffres de signes négatifs dans une programmation ? Persos , je pensais pas que çà existait .....

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 17 Nov 2013, 15:49

Bonjour,
En informatique (que vous appelez programmation), on utilise en gros deux types de nombres, les nombres entiers et les nombres en virgule flottante.
Toujours en gros, les premiers sont utilisés pour des comptages, les seconds pour des mesures. Dans les deux cas, les nombres négatifs sont utiles.
Généralement, c'est à dire dans les langages courants, sans précision supplémentaire, c'est à dire par défaut, les nombres peuvent être positifs ou négatifs.
Mais si vous décidez et précisez (unsigned) qu'une telle variable ne peut être que positive, alors avec 2 octets un entier peut valoir de 0 à 65535.

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 19 Nov 2013, 22:10

Merci pour l'info !
Les nombres avec virgules , est-ce qu'on les arrondis ou pas?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 19 Nov 2013, 22:38

lulubibi28 a écrit:Merci pour l'info !
Les nombres avec virgules , est-ce qu'on les arrondis ou pas?

Il est un peu tard, mais je vais essayer de donner une réponse simple.
Un nombre sur 16 bits, c'est à dire 2 octets peut représenter 65535 valeurs différentes, pas une de plus.
Pour les nombres entiers, on en a parlé.
Pour les flottants, on décide de réserver un certain nombre de bits pour la caractéristique, c'est à dire en gros, la position de la virgule.
Par exemple, si on réserve 3 bits pour la caractéristique (0 à 7), un bit de signe, il reste 12 bits pour la mantisse, c'est à dire les chiffres significatifs.
12 bits, ça signifie 2^12 possibilités, soit 4096.
Les histoires d'arrondis ne se passent qu'à l'impression. Par exemple si vous écrivez Val=2.00, normalement, c'est à dire dans les langages que je connais, en mémoire il y a 1.99999.
Mais on a bien appris à la machine et si on l'imprime, on aura 2.00
On approche là un point assez compliqué et qu'il n'est pas indispensable de comprendre maintenant.
Bonne soirée.

PS. Je voudrais rajouter un mot : La gestion des nombres flottants est une chose compliquée. Le document officiel doit faire une cinquantaine de pages. Donc, pour vous, actuellement, il faut vous limiter à des notions simples. La seule chose qui me parait importante à retenir est qu'il ne faut pas faire de comparaison d'égalité entre 2 nombres flottants.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 20 Nov 2013, 08:42

Dlzlogic a écrit:Un nombre sur 16 bits, c'est à dire 2 octets peut représenter 65535 valeurs différentes, pas une de plus.
Pour les nombres entiers, on en a parlé.
Pour les flottants, on décide de réserver un certain nombre de bits pour la caractéristique, c'est à dire en gros, la position de la virgule.
Par exemple, si on réserve 3 bits pour la caractéristique (0 à 7), un bit de signe, il reste 12 bits pour la mantisse, c'est à dire les chiffres significatifs.
12 bits, ça signifie 2^12 possibilités, soit 4096.
Les histoires d'arrondis ne se passent qu'à l'impression. Par exemple si vous écrivez Val=2.00, normalement, c'est à dire dans les langages que je connais, en mémoire il y a 1.99999.
Mais on a bien appris à la machine et si on l'imprime, on aura 2.00



Avec 16 bits, on peut représenter valeurs.

L'arrondi des nombres flottants est quelque chose d'important et compliqué. La plupart des calculs sur les nombres flottants provoquent une "question" sur l'arrondi du résultat, et pas seulement à l'affichage.

Dans la norme IEEE 754, il y a quatre modes d'arrondi... (La norme IEEE 754 normalise les formats des flottants, la façon dont les arrondis et calculs sont faits.)

Je ne vois pas pourquoi 2.00 serait stocké en mémoire par 1.99999 :hein:

En précision sur 32 bits, un flottant normalisé est codé par
S un est un entier de 1 bit (0 ou 1) (--> Signe)
M est un entier de 23 bits (--> Mantisse, comprise entre 0 et )
E est un entier de 8 bits (--> Exposant, compris entre 0 et )

Par exemple , le nombre 2.00 et codé avec
S=0 , ,


Pour les flottants en 16 bits, c'est similaire , mais avec
S un est un entier de 1 bit (0 ou 1) (--> Signe)
M est un entier de 10 bits (--> Mantisse, comprise entre 0 et )
E est un entier de 5 bits (--> Exposant, compris entre 0 et )

Par exemple , le nombre 2.00 et codé avec
S=0 , ,


https://fr.wikipedia.org/wiki/IEEE_754
http://fr.openclassrooms.com/informatique/cours/nombres-flottants-et-processeurs/rappels-sur-la-norme-ieee-754
https://en.wikipedia.org/wiki/Half-precision_floating-point_format

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 20 Nov 2013, 17:51

ok!Merci ! Mais j'ai une question sur une base qu'on doit cerner en L1 :



La mémoire, quelles que soient les unités dont elle est constituée, va bien sûr contenir plusieurs types de données. Supposons qu'une donnée figure à l'adresse 2011 ; pour savoir où elle s'arrête, il faut connaître sa taille ; chaque donnée ayant apriori une taille différente des autres, cette taille doit bien être écrite quelque part dans la mémoire ; on la fera ici arbitrairement figurer au début de la donnée, dans un en-tête (en réalité l'endroit où se trouve cette taille varie). Pour lire la donnée, nous devons donc d'abord lire la taille qu'elle occupe ; cette taille sera exprimée par une séquence de bits, à interpréter comme un nombre entier ; elle sera suivie par une séquence de bits à interpréter en fonction du type de la donnée : est-ce un nombre, un caractère, ou un ensemble de données ? L'en-tête de la donnée va contenir ces informations.

Une structure de données rigide va donc contenir deux parties : l'en-tête (en jaune dans les tableaux ci-dessous), ensemble de données indiquant la manière dont il faut lire les données, et l'ensemble des données qui suivent. Pour savoir où s'arrête l'en-tête, on peut provisoirement supposer que tous les en-têtes ont la même taille, connue par le système (stockée quelque part ailleurs dans la mémoire), ou que l'en-tête a lui-même un en-tête, qui indique sa taille.
en-tête données

Une structure de données rigide occupera un morceau de la mémoire. Pour la stocker, il faut donc calculer sa taille (y compris celle de l'en-tête) et trouver, dans la mémoire, une place libre de cette taille, puis écrire l'en-tête et réserver l'espace nécessaire aux données : c'est ce qu'on appelle la déclaration. Une fois déclarée la structure de données, on peut ensuite écrire les données dans l'espace réservé, c'est ce qu'on appelle l'affectation. Dans les descriptions qui suivent, les représentations internes sont données à titre d'exemple (il y a plusieurs manières de représenter les structures de données) ; l'important est d'en comprendre le principe.

Il y a trois types de structures de données rigides : le scalaire, le vecteur et l'agrégat.

Le scalaire ne contient qu'une seule donnée. Son en-tête indiquera qu'il s'agit d'un scalaire, le type de la donnée (nombre par exemple), et sa taille (13 unités par exemple) ; représentation interne :
S n 13

Le vecteur (qu'on appelle aussi table ou tableau) contient une séquence de données toutes de même type et de même taille. Ces données, appelées les composantes du vecteur, sont caractérisées par leur position dans la séquence (leur adresse), appelée l'indice de la composante. L'en-tête portera indication du fait qu'il s'agit d'un vecteur, de la taille et du type des composantes, et de leur nombre.

Par exemple, les noms des jours de la semaine peuvent être enregistrés dans un vecteur de 7 composantes ; la taille des composantes se calcule à partir de la plus grande : 8 octets, comme dans dimanche, à interpréter comme des caractères (c) ; il est inutile d'indiquer la taille de l'ensemble, puisqu'elle peut être calculée (7*8, soit 56 octets) ; la représentation interne, à supposer que l'en-tête se trouve à l'adresse 11 de la mémoire (et comme par hypothèse nous avons déjà supposé que l'en-tête précède la donnée), ressemblerait à ceci :
V 7 c 8 L u n d i M a r d i M e r c r e d i J e u d i
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

La troisième ligne contient les adresses internes au vecteur. Comment trouver la troisième composante ? Il suffit de sauter les composantes précédentes (deux de 8 octets) et d'aller à la case suivante : le nom du troisième jour de la semaine commence au 17e octet (2*8+1) depuis le début des données (31e octet de la mémoire). À partir de l'adresse 72 figurent d'autres informations, appartenant à d'autres données. La fin de la représentation interne du vecteur pourrait ressembler à ceci :
V e n d r e d i S a m e d i D i m a n c h e & a b c d e
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
33 34 35 36 37 38 39 40 41 42 43 45 45 46 47 48 49 50 51 52 53 54 55 56

Si l'utilisateur demande par erreur le 8e jour de la semaine, il ne faut pas que la machine lui réponde &abcde ; il faudra détecter, en consultant le nombre de composantes indiqué, que cette chaîne se trouve au-delà du vecteur.

L'accès aux données d'un vecteur est dit accès direct (parce qu'on saute directement à la donnée) ou accès par indice. La position relative de la donnée recherchée est calculée à partir de son indice I, de la taille des composantes T, de leur nombre N. La formule générale, pour un vecteur comme celui que nous avons vu, appelé vecteur à une dimension, est :

Si I < N, position-relative = ((I-1) * T) + 1

Il existe des types de vecteurs (ou tableaux) plus complexes. C'est le cas du calendrier des ventes ci-dessous, qui sera représenté par un vecteur à deux dimensions (ou une table à double entrée) ; pour accéder à une donnée, il faut deux indices (la ligne = l'objet, et la colonne = le mois) :
Janvier Février Mars Avril Mai
Cartes mères 5 7 9 15 18
Claviers 24 19 25 18 15
Écrans 32 28 27 12 52
Souris 57 62 58 65 35

Dans la représentation interne associée, on remplacera le nom des mois et le nom des objets par leur numéro d'ordre. Par une convention courante, on note calendrier[1,1] ou calendrier[0,0] (en C) la donnée en haut à gauche (nombre de cartes mères vendues en janvier) ; calendrier[2,3] représente le nombre de claviers vendus en mars ou (en C) le nombre d'écrans vendus en avril.

La représentation interne d'un vecteur à deux dimensions est obtenue en linéarisant le tableau, en notant dans l'en-tête le nombre de colonnes et de lignes et, comme pour les autres vecteurs, la taille (1 octet) et le type (nombre) des composantes :
V 2 5 4 n 1 5 7 9 15 18 24 19 25 18 15 32 28 27 12 52 57 62 58 65 35 " a 12 a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Pour accéder à la donnée figurant en troisième ligne, deuxième colonne, on commence par sauter deux lignes ; chaque ligne fait 5 colonnes, de 1 octet chacune, donc on saute 10 octets ; on saute ensuite une colonne, donc un octet, et on se positionne sur la case suivante : 10+1+1, la donnée figure au 12e octet.

Soit L le nombre de lignes, C le nombre de colonnes, T la taille de la composante, la formule générale pour calculer la donnée d'indices [l, c] (l ligne, c colonne) est :

position-relative = ((l-1) * (C*T)) + ((c-1) * T) + 1

On peut généraliser cette procédure pour définir l'accès à des vecteurs à n dimensions, pour représenter des tables à n entrées. La déclaration d'un vecteur à n dimensions initialisera son en-tête de manière à pouvoir effectuer la réservation de sa place et à écrire les paramètres qui serviront pour l'accès aux données.

Les vecteurs n'admettent qu'un seul type de données : bits, caractères, nombres entiers, nombres flottants, mots, ou même vecteurs. Pour réunir des types de données distincts, on utilisera l'agrégat (appelé structure en C et en PL1, record en Pascal ou dans les bases de données).

Un bon exemple d'agrégat est celui de la feuille de soin ; elle contient des données dans deux parties (le haut de la feuille ne contient pas de données, mais indique simplement de quoi il s'agit). Chacune de ces parties contient une étiquette (mot-clé ou phrase-clé) qui indique de quoi elle traite, et qu'on appelle une rubrique ; la première contient la rubrique assuré (pour abréger) la seconde la rubrique malade. Chacune de ces rubriques contient à son tour d'autres rubriques (nom, prénom, numéro, etc.).

Pour trouver une information dans un agrégat, par exemple le nom de l'assuré, il faut indiquer le chemin à parcourir à travers les rubriques : d'abord la rubrique assuré, puis nom ; ce qu'on note par convention assuré.nom ; un agrégat est un arbre contenant l'ensemble des chemins possibles vers les données.

Certaines données contenues dans cet agrégat sont des mots ou des suites de mots, d'autres sont des nombres, d'autres encore, comme la réponse à la rubrique accident ?, sont des données binaires (oui / non), etc.

L'en-tête comporte l'indication qu'il s'agit d'un agrégat, le nombre de rubriques principales, la taille de chacune, et son nom (en réalité un nombre, pour occuper moins de place) le nombre et la taille des sous-rubriques ; pour chaque rubrique terminale, il faut indiquer la taille de la donnée et son type. Par exemple, pour un agrégat joignant un nom à 9 caractères à un numéro, nombre de 4 octets, l'en-tête comporterait :
A 2 Nom 9 c Numéro 4 n Z O R G L U B

0 4 3 5
1 2 3 4 5 6 7 8 9 10 11 12 13

Cherchons le numéro ; il y a deux rubriques, c'est la deuxième qu'on cherche, il faut donc sauter 9 caractères, plus 1 : la donnée sur 4 octets commence en position 10.




Je n'ai pas compris comment on a aboutit à ces formules et comment les utiliser .
La notion de caractère dans l'exemple 1 ,ce serait les lettres .

Le premier vecteur est à une dimension , le deuxième à 2 dimensions c'est un calendrier (ligne , colonne ).

Que veut dire aussi la signification de en C et de n , présente dans le cours?

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 20 Nov 2013, 18:05

bj lulubibi28,

je t'invite à créer une discussion concernant ta représentation de la mémoire, plutot qu'à transformer ce fil en poubelle ou tu poses toutes tes questions! (car ca risque de poser problème si quelqu'un revient sur une question précédente, ce qui est tout sauf improbable :lol3:)
la vie est une fête :)

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 20 Nov 2013, 18:07

ok! je vais créer un nouveau sujet ^^

Ezra
Membre Naturel
Messages: 95
Enregistré le: 10 Déc 2013, 16:52

par Ezra » 04 Juil 2014, 17:05

Si c'est celui sur la loi de Moore, en fait ce n'est pas le thème qui y est traité. ^^

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 11:18

par lulubibi28 » 05 Juil 2014, 18:20

Ouais , je sais . Au moins , toi , tu ne confonds pas avec l'acteur Moore *.*(quelqu'un en dehors du forum pensait que je voulais faire sur lui , je te dis pas la goutte d'eau qui s'est formée au dessus de ma tète ) .

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite