dubbio !
ma and in javascript è || ?
dubbio !
ma and in javascript è || ?
... quello è l'OR.
L'AND è &&.
Ciao !![]()
Per completezza:
and &&
or ||
bitwise and &
bitwise or |
Cosa sono i bitwise?
In pratica fanno l'operazione bit per bit, come sarebbe legittimo aspettarsi.
In genere le operazioni logiche si fanno con i booleani, che vengono rappresentati proprio con 1 bit, quindi il risultato non cambia.
Perché allora esistono i bitwise?
Anche per un altro (utile) motivo: i bitwise eseguono obbligatoriamente tutti i rami, mentre gli operatori "standard" troncano in automatico i rami inutili.
Un esempio pratico:
if (miaVariabile && miaFunzione())
...
se miaVariabile è "false" la miaFunzione non verrà assolutamente eseguita perché inutile alla determinazione del risultato, quindi se faceva alcune operazioni prima di ritornare true o false, se miaVariabile è "false" non le fa.
Che io sappia tutti i principali linguaggi moderni usano questa feature, tanto che è buona programmazione, in una lista di condizioni in &&, di piazzare a sinistra quelle che hanno maggior probabilità di essere false.
:sborone:Originariamente inviato da nosferatu_net
Per completezza:
...
![]()
Considerala una "Nosferatu's pillola"!Originariamente inviato da Reale_Augello
:sborone:
![]()
![]()
ma..."secondo me" gli operatori bitwise servono per effettuare le operazioni di AND OR e XOR (e shift) sui bit. =)
Le principali azioni che si svolgono con questi operandi sono quelli di annullare o attivare particolari insiemi di bit...
ad esempio mi viene in mente un uso che se ne fa in C (e simili) cioè quello di accumulare grazie all'operatore | delle costanti...non so ad esempio per definire le proprietà di una finestra (esempio d'immaginazione) ci può essere un parametro che accetta un long e magari si passa:
..., MINIMIZE_BUTTON | MAXIMIZE_BUTTON ,...
per attivare entrambi i bottoni (quelle sono delle costanti).
Mi sa che ho preso la tangenziale....:tongue:
vabè spero di essermi spiegato.
ciauzzz
Io ho capito, però io magari sono malato quanto te.
Sei malato, perché secondo me sono abbastanza finiti i tempi di questo tipo di programmazione (che, per inciso, non ho vissuto).
Oramai l'utilità di avere 32 booleane diverse in 4 byte di memoria è venuta meno, anche perché il prezzo da pagare in termini di leggibilità è piuttosto alto.
Io per questo motivo non li ho mai usati, anche se so che sono nati per questo.
Li uso esclusivamente quando mi serve essere sicuro che entrambi i membri (che valutano a booleane) vengano eseguiti, quindi l'esempio che facevo sopra.
ma non credo che siano poi così finiti quei tempi...dipende da cosa programmiOriginariamente inviato da nosferatu_net
Io ho capito, però io magari sono malato quanto te.
Sei malato, perché secondo me sono abbastanza finiti i tempi di questo tipo di programmazione (che, per inciso, non ho vissuto).
Oramai l'utilità di avere 32 booleane diverse in 4 byte di memoria è venuta meno, anche perché il prezzo da pagare in termini di leggibilità è piuttosto alto.
Io per questo motivo non li ho mai usati, anche se so che sono nati per questo.
Li uso esclusivamente quando mi serve essere sicuro che entrambi i membri (che valutano a booleane) vengano eseguiti, quindi l'esempio che facevo sopra.
In particolare l'esempio che facevo non era poi di cosi grande immaginazione, ad esempio se programmi in C con le Win32 API, e vuoi creare la più semplice finestra windows...beh di costanti "accorpate insieme" come nell'esempio che facevo, ne vedi a decine...
Per la leggibilità invece non trovo che creino grossi problemi, anzi sono anche abbastanza esplicite (se le costanti sono dichiarate bene)
è ovvio che ci vuole più dimestichezza che con il "normale codice", ma è questione di abitudine...
ad esempio anche in js mi è capitato di vedere alle volte cose come:
Ycentro = Ytop + Height>>2
e penso che l'unico motivo che giustifichi sto codice sia l'abitudine...
Io ancora st'abitudine cmq non ce l'ho
ciauzzz