differenza tra && e &

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:

differenza tra && e &

Messaggio da gameplay_extreme »

dunque, ho un dubbio riguardo alla questione in titolo.
In yahoo answers al riguardo dicono:
Gli operatori && e || effettuano rispettivamente l'AND e l'OR logico tra due espressioni booleane. Gli operatori & e | effettuano invece l'AND e l'OR bit a bit: vanno, ossia, ad effettuare le operazioni di AND e di OR tra la rappresentazione in bit binari di due variabili. Dovendo nel tuo caso andare a valutare delle espressioni booleane devi utilizzare gli operatori logici e non quelli bit a bit.
questa è più o meno la stessa cosa che avevo capito io, eppure...non mi tornano i conti: una espressione boleana genera o 0 o 1, questi valori, tradotti in binario, rimangono 0 e 1 (cioè numeri a una cifra) quindi che differenza ci sarebbe tra usare l' and e l' and bitwise? cioè l' and bitwise e l' and bit per bit ma tanto i numeri coinvolti sono a una sola cifra (anche in binario)...

grazie anticipatamente per eventuali risposte :cappa:
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)

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

Re: differenza tra && e &

Messaggio da Nix »

Le operazioni binarie vengono eseguite su tutti i bit dell'espressione, mentre per quanto riguarda i booleani, anche se dipende dall'implementazione cosa è un true e cosa è un false, le operazioni su di essi si limitano a considerare i due valori possibili. Per esempio, se in un certo linguaggio viene considerato false il valore 0, e true tutti gli altri:
0 | 3 = 3
0 || 3 = 1 (perché è come false || true, cioè true)
5 & 4 = 4
5 && 4 = 1
Questo discorso comunque vale solo nel caso in cui i valori booleani e quelli numerici hanno lo stesso tipo (GML, C), mentre negli altri && è applicabile solo ai valori booleani, e & solo a quelli numerici.

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

Re: differenza tra && e &

Messaggio da gameplay_extreme »

grazie Nix, ho capito, veramente 5 minuti dopo aver postato mi ero praticamente risposto da solo...

ho capito quello che hai detto e veramente alla fine ci ero arrivato da solo, però potresti spiegarmi perché mai uno dovrebbe fare
Nix ha scritto:0 || 3
?
cioè non fa prima a fare

Codice: Seleziona tutto

0 || 1
?
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)

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

Re: differenza tra && e &

Messaggio da Jak »

Gli utilizzi sono molti ma probabilmente questo è uno dei migliori:
http://en.wikipedia.org/wiki/Mask_(computing)
In pratica puoi combinare più costanti in una sola variabile, in questo modo è facile ad esempio passare delle impostazioni tramite una funzione senza dover gestire millemila parametri in una funzione, dove magari ci sono valori che non tieni nemmeno in considerazione, puoi anche passargli valori inutili in preparazione ad un'upgrade della funzione.
Altri utilizzi possono essere in algoritmi pseudorandom o nella crittografia.
Insomma su game maker hanno ben poco senso ma in lunguaggi un po più seri o per determinati algoritmi possono essere molto veloci utili e comodi.
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

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

Re: differenza tra && e &

Messaggio da Nix »

Jak ti ha risposto per il | (avrà letto male). Per quanto riguarda il ||, non c'è effettivamente motivo di scrivere esplicitamente "0 || 3", ma può essere utile invece nel caso delle variabili o dei risultati delle funzioni. Per esempio, in un linguaggio in cui i valori positivi sono tutti true, si può fare "x || y" invece di "x > 0 || y > 0" (anche se così diventa meno chiaro), oppure si può fare "a(x) && b(y)" nel caso in cui queste funzioni segnalano un errore con lo 0 e restituiscono qualche altro valore (come un puntatore non nullo) che in questo caso a noi non serve quando non c'è nessun problema.

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

Re: differenza tra && e &

Messaggio da gameplay_extreme »

Nix ha scritto: non c'è effettivamente motivo di scrivere esplicitamente "0 || 3", ma può essere utile invece nel caso delle variabili o dei risultati delle funzioni
grazie Nix, comunque anche questo alla fine praticamente l'avevo capito da solo, per quanto rigurda la risposta di jak direi che è interessante (anche se non era quella la domanda che ho fatto)
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)

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti