DOMANDA SU TRUE/FALSE
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
DOMANDA SU TRUE/FALSE
Stavo pensando un cosa:
se io scrivo
ciao = true o ciao = false
praticamente memorizzo un dato a un solo bit (ovvero true e false possono tranquillamente essere rappresentati da un solo bit)
pero se SUCCESSIVAMENTE scrivo
ciao = 5 o ciao = 7
non ottengo un errore (non ostante occorra cambiare il numero di bit totali per rappresentare il nuovo numero)
le mie domande sono quindi:
1) esistono variabili che variano dinamicamente i bit occupati in base al numero rappresentato ?
2) non è che se in GM scrivo "ciao = true", il dato, per caso, mi occupa molto più di un bit anche se non sarebbe necessario ?
se io scrivo
ciao = true o ciao = false
praticamente memorizzo un dato a un solo bit (ovvero true e false possono tranquillamente essere rappresentati da un solo bit)
pero se SUCCESSIVAMENTE scrivo
ciao = 5 o ciao = 7
non ottengo un errore (non ostante occorra cambiare il numero di bit totali per rappresentare il nuovo numero)
le mie domande sono quindi:
1) esistono variabili che variano dinamicamente i bit occupati in base al numero rappresentato ?
2) non è che se in GM scrivo "ciao = true", il dato, per caso, mi occupa molto più di un bit anche se non sarebbe necessario ?
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
- Delfador
- Membro attivo
- Messaggi: 376
- Iscritto il: 04/01/2010, 19:52
- Specialità: Ehm...
- Località: <- Per di qua ->
- Contatta:
Re: DOMANDA SU TRUE/FALSE
Se non ricordo male (e se non è cambiato nulla dall'ultima volta che ho usato GM) tutte le variabili sono double, e dunque occupano 64 bit.
In realtà, quando tu scrivi "ciao = true" stai praticamente dicendo "ciao = 1.0".
In realtà, quando tu scrivi "ciao = true" stai praticamente dicendo "ciao = 1.0".
- aironenero
- GMI Guru
- Messaggi: 2612
- Iscritto il: 02/05/2012, 14:56
- Specialità: Unity 3D
- Uso: GM:Studio 1.4 Pro
- Località: Ispica
- Contatta:
Re: DOMANDA SU TRUE/FALSE
Siccome GM fa abbastanza schifo a gestire la ram, non puoi creare una variabile di un solo tipo, occupoerai sempre e comunque 64Bit, e devi pure stare attento a non sbagliare.
- Bombertoman
- Membro super
- Messaggi: 595
- Iscritto il: 14/07/2014, 18:35
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Località: Manfredonia (FG)
- Contatta:
Re: DOMANDA SU TRUE/FALSE
Eccolo qua perché non apri un topic intitolato "Motivi per abbandonare Game Maker"? Così ti sfoghi una volta per tutte!aironenero ha scritto:Siccome GM fa abbastanza schifo
Project GG... vediamo se riesco a finire un gioco per una volta...
Re: DOMANDA SU TRUE/FALSE
Non nel GML. Altri linguaggi supportano i numeri a precisione arbitraria (chiamati a volte bignum, bigint, ecc.), ma non c'entrano nulla col tuo esempio. Nel tuo caso vuoi cambiare il tipo di una variabile già esistente, cosa che non ha alcun senso e che è generalmente impossibile. Su GM è apparentemente possibile, ma soltanto perché i booleani sono in realtà double, e dunque non c'è nessun cambiamento reale nel tipo. Inoltre, non è possibile allocare un solo bit.gameplay_extreme ha scritto:esistono variabili che variano dinamicamente i bit occupati in base al numero rappresentato?
Re: DOMANDA SU TRUE/FALSE
In realtà puoi anche scrivere
ciao = "i3r jgi3j igjrj ogijorjgeiorjoi jp4joèo3kp4gp34 gj34jg3j pgoj3p4gjp3j4o gpj3pgjpj diocèwpefwèe caneopkwop kfpowkefkwp porcawopfekpo wemadonnafkw ofkwpoe"
e poi
ciao = true
viene automaticamente fatto il typecasting mica usa lo stesso spazio in memoria
E comunque in altri linguaggi usare un bool occupa comunque 1 byte
ciao = "i3r jgi3j igjrj ogijorjgeiorjoi jp4joèo3kp4gp34 gj34jg3j pgoj3p4gjp3j4o gpj3pgjpj diocèwpefwèe caneopkwop kfpowkefkwp porcawopfekpo wemadonnafkw ofkwpoe"
e poi
ciao = true
viene automaticamente fatto il typecasting mica usa lo stesso spazio in memoria
E comunque in altri linguaggi usare un bool occupa comunque 1 byte
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: DOMANDA SU TRUE/FALSE
E che senso avrebbe?Tizzio ha scritto:E comunque in altri linguaggi usare un bool occupa comunque 1 byte
♥♥♥♥♥♥
♥♥♥♥♥♥
♥♥♥♥♥♥
Spoiler
-
- Admin
- Messaggi: 12355
- Iscritto il: 19/08/2009, 16:20
- Specialità: Programmazione 3D
- Uso: GM:Studio 2
- Contatta:
Re: DOMANDA SU TRUE/FALSE
Architettura dei computers, serve ad avere maggiore velocità oltre che per questioni di coerenza del concetto di puntatore e di architettura della memoria. Non sempre ciò che è più veloce a logica lo è fisicamente visto che il computer non va a logica, Per lo stesso motivo esistono anche cose come il padding ed altre che "sprecano" memoria per avere tuttavia una migliore velocità effettiva.Solid Snake ha scritto:E che senso avrebbe?
Non è molto differente dalle varie ottimizzazioni in programmazione, quasi sempre non esistono ottimizzazioni a prescindere, puoi solo decidere di sacrificare leggermente una parte per ottenere un grosso vantaggio in un'altra.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: DOMANDA SU TRUE/FALSE
Naturalmente i linguaggi di programmazione un po' più a basso livello lasciano facilmente utilizzare i singoli bit delle variabili,
quindi lasciano la possibilità di aggregare tante "variabili" binarie nello stesso byte.
gli operatori bitwise (che esistono anche come comandi assembly per questo motivo) sono mantenuti anche in linguaggi di (relativamente) alto livello per gestire bit per bit qualsiasi variabile.
E comunque se la variabile è salvata come integer con un poco di impegno si possono sempre utilizzare i singoli byte, anche se quando non sono disponibili gli operatori bitwise e le variabili integer il gioco potrebbe non valere la candela...
quindi lasciano la possibilità di aggregare tante "variabili" binarie nello stesso byte.
gli operatori bitwise (che esistono anche come comandi assembly per questo motivo) sono mantenuti anche in linguaggi di (relativamente) alto livello per gestire bit per bit qualsiasi variabile.
E comunque se la variabile è salvata come integer con un poco di impegno si possono sempre utilizzare i singoli byte, anche se quando non sono disponibili gli operatori bitwise e le variabili integer il gioco potrebbe non valere la candela...
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- gameplay_extreme
- GMI VIP
- Messaggi: 3824
- Iscritto il: 13/11/2010, 16:23
- Uso: GM:Studio 2
- Contatta:
Re: DOMANDA SU TRUE/FALSE
scusate il "lieve" ritardo,
ok...quindi DOUBLE = 64 cifre binarie FISSE, se metti come valore 1 vorra dire che ci saranno un sacco di "zeri a sinistra", capitoSe non ricordo male (e se non è cambiato nulla dall'ultima volta che ho usato GM) tutte le variabili sono double, e dunque occupano 64 bit.
avevo il "vaghissimo" sospetto, però ho preferito chiedere confermaIn realtà, quando tu scrivi "ciao = true" stai praticamente dicendo "ciao = 1.0".
grazie della "seganalazione"Non nel GML. Altri linguaggi supportano i numeri a precisione arbitraria (chiamati a volte bignum, bigint, ecc.)
effetivamente anche a me sembra che non abbia molto senso...comunque Tizzio ha veramente dimostrato (a differenza di me) che in GM si può fare! (testato anche da me, GM8)Nel tuo caso vuoi cambiare il tipo di una variabile già esistente, cosa che non ha alcun senso e che è generalmente impossibile.
clicca sul logo qui sopra per info e download riguardo ai miei software o per sapere come si crea un videogioco!
iscriviti qui gratuitamente a GMI !
Spoiler
-
- Membro attivo
- Messaggi: 341
- Iscritto il: 03/09/2013, 13:26
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: DOMANDA SU TRUE/FALSE
So che è un po' da pazzi però nel caso dei bool in c++ che occupano comunque 8 bit potresti essere fantasioso ed agire diversamente, inizializzare un unsigned int, scriverti una formula che scriva e legga un totale di 8 "bool", uno per ogni bit della variabile. È difficile da spiegare, è da pazzi, ma se vuoi ultraiperottimizzare l'utilizzo della ram, si può. Fa anche schifo perché ogni volta che devi verificare uno degli 8 bool contenuti dovresti inserire l'intera formula per ricavarlo. Ah ovviamente ci perdi con l'utilizzo del processore xD
Credo sia invece mooooolto più complesso fare la stesso cosa con un double :\
Credo sia invece mooooolto più complesso fare la stesso cosa con un double :\
Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif
Spoiler
Re: DOMANDA SU TRUE/FALSE
In realtà il GML è interpretato e quando chiami ciao = true viene riallocato lo spazio (se guardi il source di enigma puoi vedere com'è possibile fare una cosa del genere)gameplay_extreme ha scritto:comunque Tizzio ha veramente dimostrato (a differenza di me) che in GM si può fare! (testato anche da me, GM8)
https://github.com/enigma-dev/enigma-de ... m/var4.cpp
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti