DOMANDA SU TRUE/FALSE

Algoritmi, discussioni sulle possibili implementazioni, matematica, fisica e tutti gli argomenti correlati alla programmazione
Rispondi
Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

DOMANDA SU TRUE/FALSE

Messaggio da gameplay_extreme »

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 ?
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Avatar utente
Delfador
Membro attivo
Messaggi: 376
Iscritto il: 04/01/2010, 19:52
Specialità: Ehm...
Località: <- Per di qua ->
Contatta:

Re: DOMANDA SU TRUE/FALSE

Messaggio da Delfador »

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".
Immagine

Avatar utente
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

Messaggio da aironenero »

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.
Unity Developer
Immagine
Immagine

Avatar utente
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

Messaggio da Bombertoman »

aironenero ha scritto:Siccome GM fa abbastanza schifo
Eccolo qua :lol: perché non apri un topic intitolato "Motivi per abbandonare Game Maker"? Così ti sfoghi una volta per tutte! :lol:
Project GG... vediamo se riesco a finire un gioco per una volta...

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: DOMANDA SU TRUE/FALSE

Messaggio da Nix »

gameplay_extreme ha scritto:esistono variabili che variano dinamicamente i bit occupati in base al numero rappresentato?
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.

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: DOMANDA SU TRUE/FALSE

Messaggio da Tizzio »

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

Solid Snake
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

Messaggio da Solid Snake »

Tizzio ha scritto:E comunque in altri linguaggi usare un bool occupa comunque 1 byte
E che senso avrebbe? :confuso:
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: DOMANDA SU TRUE/FALSE

Messaggio da Jak »

Solid Snake ha scritto:E che senso avrebbe? :confuso:
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.
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

Avatar utente
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

Messaggio da BaronVsCorsar »

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...
ImmagineSchiva 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é?

Avatar utente
gameplay_extreme
GMI VIP
Messaggi: 3824
Iscritto il: 13/11/2010, 16:23
Uso: GM:Studio 2
Contatta:

Re: DOMANDA SU TRUE/FALSE

Messaggio da gameplay_extreme »

scusate il "lieve" ritardo,
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.
ok...quindi DOUBLE = 64 cifre binarie FISSE, se metti come valore 1 vorra dire che ci saranno un sacco di "zeri a sinistra", capito
In realtà, quando tu scrivi "ciao = true" stai praticamente dicendo "ciao = 1.0".
avevo il "vaghissimo" sospetto, però ho preferito chiedere conferma
Non nel GML. Altri linguaggi supportano i numeri a precisione arbitraria (chiamati a volte bignum, bigint, ecc.)
grazie della "seganalazione"
Nel tuo caso vuoi cambiare il tipo di una variabile già esistente, cosa che non ha alcun senso e che è generalmente impossibile.
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)
Immagine
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
- Una curiosità: come mai quell' ordine ?
- Perché formava una scaletta molto carina da vedere.


"ah ah...grazie alla annotazione scientifica ti ho fregato!"
(come disse la calcolatrice al display)

Barnack
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

Messaggio da Barnack »

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 :\

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: DOMANDA SU TRUE/FALSE

Messaggio da Tizzio »

gameplay_extreme ha scritto:comunque Tizzio ha veramente dimostrato (a differenza di me) che in GM si può fare! (testato anche da me, GM8)
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)
https://github.com/enigma-dev/enigma-de ... m/var4.cpp

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti