Page 1 sur 1
Un bit comme type de variable ?
Publié : ven. 27/juil./2007 18:20
par Octavius
Vu la taille des programmes que j'ai fait jusqu'à présent ça n'a jamais été vraiment important la place qu'occupait mes variables, mais je préfère y faire attention, surtout si je commence à faire des petits jeux en 2D. Bref, la plus petite variable que j'ai trouvé en PB c'est le byte, qui prend qd mm un octet en entier. Or il m'arrive assez souvent dans un programme d'utiliser des variables qui font office de oui/non, et un bit est donc bien suffisant. Est-il possible de n'allouer qu'un bit pour une variable ? Ou l'octet est-il le minimum ?
Re: Un bit comme type de variable ?
Publié : ven. 27/juil./2007 18:53
par Backup
Octavius a écrit : Bref, la plus petite variable que j'ai trouvé en PB c'est le byte, qui prend qd mm un octet en entier. Or il m'arrive assez souvent dans un programme d'utiliser des variables qui font office de oui/non, et un bit est donc bien suffisant. Est-il possible de n'allouer qu'un bit pour une variable ? Ou l'octet est-il le minimum ?
byte en anglais signifie octet en français !!
dans un octet tu a 8 bits !!
donc 8 information elementaire 0 ou 1
rien ne t' empeche donc d'utiliser un octet pour conserver 8 informations
elementaire !!
a savoir qu'en Purebasic les octets vont de -128 a +127
pour qu'un octet puisse aller de 0 a 255 (comme souvent connu

)
il faut ajouter
& 255 a ta variable !!
tu as donc 256 valeur possible avec un octet !

chacune des valeurs correspond a une configuration de ces 8 petit drapeaux (0 ou 1)
ex :
000 = 0
001 = 1
010 = 2
011 = 3
ect ...
en mettant la valeur 3 dans une variable , cela reviens a mettre les 2 derniers bits a 1

2 drapeaux mis a 1 d'un coup !!
rien n'empeche par la suite de lire les bits de façon individuel !!
ex
on a bien les 2 derniers bits a 1 !!
avec un seul octets , 8 information binaire sauvé d'un coup !!

Publié : ven. 27/juil./2007 21:30
par Droopy
PureBasic génère des EXE tout petit.
Dans un jeux ce seront surement les sprite et les sons qui prendront de la place.
Publié : sam. 28/juil./2007 8:59
par brossden
Octavius, j'ignore quel est la puissance de ta machine mais je t'assure que tu peux prendre autant d'octets que tu voudras pour faire tes programmes,je pense que seras fatigué d'écrire avant que celle-ci t'annonce "Work Space Full"
De plus l'economie que tu penses réaliser en utilisant chaque bit d'un octet, va te necessiter plus d'octets de programmation pour arriver à traiter correctement tes données avec toutes les sources d'erreur que cela va engendrer.
Alors un bon tuyau, nous ne sommes plus en DOS, tu peux te faire plaisir en utilisant autant de variable que tu le désires !
Essaye d'imaginer quel travail d'ecriture tu vas avoir besoin pour utiliser 1 Mo de mémoire octet par octet (1 000 000 quand même !) ce qui de nos jour est devenu une petite unité !
Publié : sam. 28/juil./2007 10:05
par Fanator
Bonjour à tous.
J'ai un problème avec BinQ(). Le bit 32 est égal à 0 alors qu'il devrait être à 1. Voici le code :
Code : Tout sélectionner
a.q = %0000000000000000000000000000000000000000000000000000000000000001
a$ = RSet(BinQ(a),64,"0")
Debug a
Debug a$
chaine$ = ""
For k = 0 To 63
Select k
Case 0
b.q = a
b$ = RSet(BinQ(b),64,"0")
Debug "Ps" + Str(k) + "_" + b$
Debug StrQ(b)
chaine$ + Mid(b$,64-k,1)
Default
b.q = b << %1
b$ = RSet(BinQ(b),64,"0")
Debug "Ps" + Str(k) + "_" + b$
Debug StrQ(b)
chaine$ + Mid(b$,64-k,1)
EndSelect
Next k
i = 64: Debug Left(chaine$,i)
For i = 0 To 63
x = Val(Mid(chaine$,i+1,1))
If x=1
Debug "Octet n° " + Str(i) + " = 1"
Else
Debug "Octet n° " + Str(i) + " = 0 : Problème !"
EndIf
Next i
Publié : sam. 28/juil./2007 11:01
par Octavius
Ok merci pour les infos les gars, ça sert à rien que je me prenne la tête avec les bits en fait!
Pour ton problème Fanator je ne peux pas t'aider.
Publié : sam. 28/juil./2007 12:24
par Backup
@Fanator : chez moi ça marche !!
a tu la version 4.10 de purebasic ?
ton programme met a 1 les differentes positions des 64 bit
a la fin tout est a 1
j'ai mis un breakpoint sur ton message
, le programme n'y est jamais allé !

Publié : sam. 28/juil./2007 12:27
par brossden
Dobro,la version 4.10 est OK !
La version 4.02 a effectivement un bug dans le BinQ()
testez cela !
Le premier bit passe à la trappe !!!

Publié : sam. 28/juil./2007 12:50
par Fanator
@Dobro : j'ai effectivement la version 4.02 de PB, je n'ai plus qu'à télécharger la version 4.10 beta 2
Merci pour la réponse
Fanator
Publié : sam. 28/juil./2007 12:59
par Backup
brossden a écrit :Dobro,la version 4.10 est OK !
je n'en doute pas , c'est celle que j'ai

justement je me doutais d'un truc dans le genre !

Publié : dim. 29/juil./2007 21:41
par Ollivier
Je remarque que je ne suis pas le seul à avoir eu la remarque bien urbaine de Dobro:
"T'as quelle version ? Parce que moi en 4.10 ça marche !"
Au passage merci Dobro, qu'est-ce qu'on est bien en 4.10.
