FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» bouton dans autre form que 0
Comment FBCroco stocke-t-il ses données ? Emptypar leclode Aujourd'hui à 13:59

» KGF_dll - nouvelles versions
Comment FBCroco stocke-t-il ses données ? Emptypar Klaus Aujourd'hui à 11:41

» Gestion d'un système client-serveur.
Comment FBCroco stocke-t-il ses données ? Emptypar Klaus Aujourd'hui à 10:23

» PANORAMIC V 1
Comment FBCroco stocke-t-il ses données ? Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Comment FBCroco stocke-t-il ses données ? Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Comment FBCroco stocke-t-il ses données ? Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Comment FBCroco stocke-t-il ses données ? Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Comment FBCroco stocke-t-il ses données ? Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Comment FBCroco stocke-t-il ses données ? Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Comment FBCroco stocke-t-il ses données ? Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Comment FBCroco stocke-t-il ses données ? Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Comment FBCroco stocke-t-il ses données ? Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Comment FBCroco stocke-t-il ses données ? Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Comment FBCroco stocke-t-il ses données ? Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Comment FBCroco stocke-t-il ses données ? Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Comment FBCroco stocke-t-il ses données ?

Aller en bas 
AuteurMessage
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Comment FBCroco stocke-t-il ses données ? Empty
MessageSujet: Comment FBCroco stocke-t-il ses données ?   Comment FBCroco stocke-t-il ses données ? EmptyLun 14 Oct 2019 - 9:24

Un petit tutoriel inspiré par un ancien article d'Amstrad magazine.

Dites-moi si c'est assez clair.

Des exemples supplémentaires seront fournis sous forme de programmes dans la prochaine version de FBCroco.

Code:

Sous le titre _A la découverte d'une fonction oubliée_, la revue
_Amstrad Magazine_ avait publié un article décrivant les fonctions
d'accès à la mémoire du BASIC Amstrad. Les exemples portaient sur
le stockage des données en mémoire.

Le présent article reprend ce thème mais à l'adaptant à FBCroco,
lequel utilise les modes de stockage de FreeBASIC.

Stockage des entiers
--------------------

Chaque entier est stocké sur 4 octets (32 bits).

Si p représente l'adresse du premier octet, les 4 octets sont stockés dans l'ordre suivant :

             p       p + 1     p + 2     p + 3
        +---------+---------+---------+---------+
        | Octet_0 | Octet_1 | Octet_2 | Octet_3 |
        +---------+---------+---------+---------+
        
L'octet de poids fort est en dernier, selon la convention dite _little endian_.
Pour avoir la représentation binaire ou hexadécimale du nombre il faut donc concaténer les octets dans l'ordre suivant :

        | Octet_3 | Octet_2 | Octet_1 | Octet_0 |

Le premier bit est le bit de signe : 0 pour un nombre positif, 1 pour un nombre négatif.

La valeur du nombre est donc donnée par les 31 bits restants, ce qui permet de représenter des valeurs allant de 0 à 2^31 - 1 = 2147483647

Pour les nombres négatifs, mettre le premier bit à 1 revient à ajouter 2^32 = 2147483648. Il faut donc soustraire cette valeur.

La gamme de valeurs possibles pour les entiers est donc :

        -2^32       ... 2^31 - 1
        
        -2147483648 ... 2147483647
        
        
Stockage des réels
------------------

Les réels sont mis sous la forme d'un nombre dont la partie entière est
égale à 1 (mantisse) multiplié par une puissance de 2.

Exemples :

        12.345 = 1.543125 * 2^3
        
        0.0678 = 1.0848 * 2^(-4)
        
Les réels sont stockés en double précision sur 8 octets (64 bits) selon la norme IEEE 754 :

- le premier bit est le bit de signe        
- les 11 bits suivants codent un entier e égal à l'exposant de 2 augmenté de 1023
- les 52 bits restants codent un entier m correspondant à la partie _fractionnaire_ de la mantisse, multipliée par 2^52


Par exemple, pour le nombre 12.345 nous aurions :

        e = 3 + 1023 = 1026
        
        m = 0.543125 * 2^52 = 2446017547615601

La partie entière de la mantisse étant égale à 1, la valeur absolue du nombre réel est :

        (1 + m / 2^52) * 2^(e - 1023)

Le signe est attribué selon le premier bit.

L'exposant codé sur 11 bits va théoriquement de 0 à 2^11 - 1 = 2047.
Toutefois les deux valeurs extrêmes sont réservées par la norme.
Les valeurs acceptables pour e vont donc de 1 à 2046, soit -1022 à 1023 pour la puissance de 2.

Pour la mantisse, les valeurs possibles de m vont de 0 à 2^52 - 1 ;
la mantisse va donc de 1 à :

        1 + (2^52 - 1) / 2^52 = 2 - 2^(-52)
        
Le plus petit nombre positif représentable est donc :

        1 * 2^(-1022)  ~  2.225073858507201 * 10^(-308)
        
et le plus grand nombre :

        2^1023 * (2 - 2^(-52))  ~  1.797693134862316 * 10^308
        
Le plus petit nombre x tel que (1 + x) a une représentation différente de
x (appelé _epsilon machine_) est :

        x = 2^(-52)  ~  2.220446049250313 * 10^(-16)
        

Stockage des chaînes de caractères
----------------------------------

Pour chaque chaîne de caractères FBCroco stocke deux informations :

1. Un _descripteur de chaîne_ constitué d'une suite de 3 entiers (12 octets) représentant :

- l'adresse p de la chaîne proprement dite
- sa longueur L (également accessible par la fonction `len`)
- une taille de bloc, égale à 36 pour FreeBASIC

2. La chaîne proprement dite, terminée par le caractère de code 0
   (chaîne à zéro terminal, comme en C)
  
Exemple avec la chaîne "Bonjour" :

       Octet      :  p   p+1   p+2   p+3   p+4   p+5   p+6   p+7
       Code ASCII :  66  111   110   106   111   117   114    0
       Caractère  :  B    o     n     j     o     u     r

La chaîne occupe donc (L + 1) octets, auxquels il faut ajouter les 12 octets du descripteur.

Références :

1. D. Martin, A la découverte d'une fonction oubliée, _Amstrad Magazine_ n° 2, p. 13-14.
  Disponible sur le Site des anciennes revues informatiques

2. Wikipedia : Double-precision floating-point format
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
 
Comment FBCroco stocke-t-il ses données ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» RESOLU hum...) Comment sauver des données avec save_dialog
» FBCroco: problème avec input
» Gestion de données en FTP.
» Sub: données d'un fichier
» bases de données SQL

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Expériences autour de PANORAMIC :: Crocodile Basic-
Sauter vers: