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
» Logiciel de planétarium.
nombres entiers et limitation Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
nombres entiers et limitation Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
nombres entiers et limitation Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
nombres entiers et limitation Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
nombres entiers et limitation Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
nombres entiers et limitation Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
nombres entiers et limitation Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
nombres entiers et limitation Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
nombres entiers et limitation Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
nombres entiers et limitation Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
nombres entiers et limitation Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
nombres entiers et limitation Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
nombres entiers et limitation Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
nombres entiers et limitation Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
nombres entiers et limitation Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 nombres entiers et limitation

Aller en bas 
AuteurMessage
Invité
Invité




nombres entiers et limitation Empty
MessageSujet: nombres entiers et limitation   nombres entiers et limitation EmptyDim 10 Oct 2010 - 0:04

voici une limitation des nombres entiers.

Pour arréter la boucle, appuyer sur escarpe
Faisant mes essais avec l'éditeur Crimson et utilisant chain, cela ne me pose pas de problèmes, mais je pense qu'avec l'éditeur, il y aura un blocage (peut-être qu'avec Scancode que j'ai rajouté, cela ne sera pas le cas)

Code:
height 0,900
dim a%,b% ,c%
b%= 1
for a%= 1 to 2147483648
  b% = b% * 2 :print b%," ",c%
  c%=c%+1
  if  b% >=2147483648 then exit_for
  if scancode=27 then stop
next a%
print c% ," ",b%

En remplaçant b% par b, pour utiliser les nombres à virgules flottantes, a% fonctionne normalement et s'arrète à 31
Revenir en haut Aller en bas
Invité
Invité




nombres entiers et limitation Empty
MessageSujet: Re: nombres entiers et limitation   nombres entiers et limitation EmptyDim 10 Oct 2010 - 0:38

Je suppose que ce problème vient de ce que je suis en train de lire sur le C et asm.
Le problème est peut-être le même avec Delphi:


Citation :
unsigned char uchar = 0xFF;
signed char schar = 0xFF;
int a = (int) uchar; /* a = 255 (0x000000FF) */
int b = (int) schar ; /* b = -1 (0xFFFFFFFF) */

Fig. 2.1 ? Extension de signe en C

char ch;
while( (ch = fgetc(fp)) != EOF ) {
/* faire qqch avec ch */
}

Fig. 2.2 - Utilisation de la fonction fgetc

Application à la programmation en C
L'extension d'entiers signés et non signés a également lieu en C. Les variables en C peuvent être déclarées soit comme signées soit comme non
signées (les int sont signés). Considérons le code de la Figure 2.1. A la ligne 3, la variable a est étendue en utilisant les règles pour les valeurs non signées (avec MOVZX), mais à la ligne 4, les règles signées sont utilisées pour
b (avec MOVSX).
Il existe un bug de programmation courant en C qui est directement lié à notre sujet. Considérons le code de la Figure 2.2. La prototype de fgetc()est : int fgetc( FILE * );
On peut se demander pourquoi est-ce que la fonction renvoie un int puis-qu'elle lit des caractères? La raison est qu'elle renvoie normalement un char (étendu à une valeur int en utilisant l'extension de zéro). Cependant, il y a une valeur qu'elle peut retourner qui n'est pas un caractère, EOF. C'est une macro habituellement dé?nie comme valant ?1. Donc, fgetc() retourne soit un char étendu à une valeur int (qui ressemble à 000000xx en hexa) soit
EOF (qui ressemble à FFFFFFFF en hexa).
Le problème avec le programme de la Figure 2.2 est que fgetc() renvoie un int, mais cette valeur est stockée dans un char. Le C tronquera alors les bits de poids fort pour faire tenir la valeur de l'int dans le char. Le seul problème est que les nombres (en hexa) 000000FF et FFFFFFFF seront tous deux tronqué pour donner l'octet FF. Donc, la boucle while ne peut pas
distinguer la lecture de l'octet FF dans le ?chier et la ?n de ce ?chier. Ce que fait exactement le code dans ce cas change selon que le char est signé ou non. Pourquoi? Parce que ligne 2, ch est comparé avec EOF. Comme

et aussi:

Citation :
TRAVAILLER AVEC LES ENTIERS
EOF est un int

, ch sera étendu à un int a?n que les deux valeurs comparées
soient de la même taille

. Comme la Figure 2.1 le montrait, le fait qu'une variable soit signée ou non est très important. Si le char n'est pas signé, FF est étendu et donne 000000FF. Cette valeur est comparée à EOF (FFFFFFFF) et est différente. Donc la boucle ne finit
jamais!
So le char est signé, FF est étendu et donne FFFFFFFF. Les deux valeurs sont alors égale et la boucle se termine. Cependant, comme l'octet FF peut avoir été lu depuis le fichier, la boucle peut se terminer prématurément. La solution à ce problème est de définir la variable ch comme un int, pas un char. Dans ce cas, aucune troncation ou extension n'est effectuée à la ligne 2. Dans la boucle, il est sans danger de tronquer la valeur puisque ch doit alors être réellement un octet.
Revenir en haut Aller en bas
 
nombres entiers et limitation
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» addition d'entiers avec des réels
» Convertisseur pour nombres entiers signés
» Les nombres narcissiques (ou nombres d’Armstrong)
» limitation de longueur avec mid$()
» Limitation du nombre de conteneurs ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: