Torna indietro   Hardware Upgrade Forum > Software > Programmazione

GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2010, 11:10   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[C#]Differenza fra || e | e fra & e &&

Finalmente ho modo di studiare C#, su un libro non proprio stupendo (poichè a quanto ho letto è stato scritto prima per Visual Basic e poi convertito per C# lasciando purtroppo qua e là alcuni riferimenti al visual basic, però visto che l'ho avuto gratis non mi lamento) ma pur sempre un libro.
Dunque avrei una domanda.
Ho letto che gli operatori logici || e && sono ottimizzati rispetto a | e &. E il perchè sono più performanti l'ho capito.
A questo punto mi chiedevo: quand'è che può valer la pena usare ancora | e &?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 11:41   #2
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12847
| e & sono operatori bit a bit (servono per maneggiare i bit).

Ti faccio un esempio carino (più consono a C/C++):

Come saprai al carattere ascii 'A' è associato un valore intero: 65.

In binario:

100 0001

Cosa succede se vogliamo convertire il carattere 'A' nel minuscolo 'a'?

Vediamo che 'a' è codificato col numero 97:

110 0001

Guarda caso differiscono solo per un bit.

A questo punto per passare da 'A' ad 'a' possiamo pensare ad esempio di fare:

(65) 100 0001 OR
(32) 010 0000 =
-----------------
(97) 110 0001

Quindi se applichi l'istruzione:

Codice:
'A' | 32
Ottieni 'a'.

Se volessimo ripassare da 'a' ad 'A', basterebbe fare un AND con una maschera del tipo:

(97) 110 0001 AND
(95) 101 1111 =
------------------
(32) 100 0001

Ultima modifica di WarDuck : 30-05-2010 alle 11:49.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 12:00   #3
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12847
Ti faccio un altro esempio... supponi tu voglia convertire il carattere '5' nel corrispondente intero 5.

Vediamo la tabella ascii:

011 0000 | 060 | 0
011 0001 | 061 | 1
011 0010 | 062 | 2
011 0011 | 063 | 3
011 0100 | 064 | 4
011 0101 | 065 | 5
011 0110 | 066 | 6
011 0111 | 067 | 7
011 1000 | 070 | 8
011 1001 | 071 | 9

Noti niente di particolare? Esatto, i primi 4 bit (da destra) rappresentano esattamente il numero intero in questione.

A questo punto basta "cestinare" gli ultimi 3 bit.

Prendiamo ad esempio 5:

(65) 011 0101 AND
(15) 000 1111 =
------------------
(05) 000 0101

Così facendo (X & 15) passi dal carattere all'intero corrispondente (chiaramente questo vale per 0 <= X <= 9).

Ultima modifica di WarDuck : 30-05-2010 alle 12:03.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 13:57   #4
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
oltre alle spiegazioni forniteti da WarDuck é bene precisare una cosa:

Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ho letto che gli operatori logici || e && sono ottimizzati rispetto a | e &. E il perchè sono più performanti l'ho capito.
e quale sarebbe il perché? a me non risulta affatto. la differenza tra i primi due e gli altri due é solamente che i primi due sono operatori booleani mentre gli altri sono bitwise. da che mi risulti funzionano tutti e quattro esattamente come in C, C++ e Java.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 15:44   #5
Gremo
Senior Member
 
L'Avatar di Gremo
 
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
& e | controllano sempre tutte le condizioni. && e || no: nell'ipotesi di AND che la prima condizione sia false, non vengono controllate le restanti (perché il risultato è false in ogni caso). Per l'OR è lo stesso, se la prima è true le altre vengono saltate. Perciò è più performante. Inoltre possono succedere cose strane come:

Codice:
a = 4;
b = 0:

# Nessun errore di divisione per zero
If (True || (a / b > 0)) { ... }
If (False && (a / b > 0)) { ... }

# Qui viene generata l'eccezione anche se non è necessario
controllare anche la seconda condizione, viene fatto lo stesso
If (True | (a / b > 0)) { ... }
If (False & (a / b > 0)) { ... }
Non ho mai avuto la necessità di usare & oppure |.
__________________

Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM
Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_
Gremo è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 17:19   #6
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
Quote:
Originariamente inviato da Gremo Guarda i messaggi
& e | controllano sempre tutte le condizioni.
non è che controllino sempre le condizioni...è che ci fanno delle operazioni algebriche
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 17:22   #7
Gremo
Senior Member
 
L'Avatar di Gremo
 
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
Quote:
Originariamente inviato da lupoxxx87 Guarda i messaggi
non è che controllino sempre le condizioni...è che ci fanno delle operazioni algebriche
...e come effetto controllano tutte le condizioni se messe in un If...
__________________

Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM
Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_
Gremo è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 18:23   #8
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da Gremo Guarda i messaggi
& e | controllano sempre tutte le condizioni. && e || no: nell'ipotesi di AND che la prima condizione sia false, non vengono controllate le restanti (perché il risultato è false in ogni caso). Per l'OR è lo stesso, se la prima è true le altre vengono saltate. Perciò è più performante.
giusto: gli operatori bitwise per forza di cose sono eager mentre quelli booleani sono lazy.



Quote:
Non ho mai avuto la necessità di usare & oppure |.
in C/C++ capita spesso se si lavora con le API di Windows, le syscall di Linux o altro genere di interfacce di basso livello: capita spesso di dover riempire delle maschere di bit usando il bitwise OR e/o di dover testare dei bit in delle maschere usando il bitwise AND.

EDIT - e naturalmente, se il programmatore é un tipo particolarmente creativo, puó anche capitargli di dover invertire specifici bit di una maschera usando il bitwise XOR
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 18:33   #9
Gremo
Senior Member
 
L'Avatar di Gremo
 
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
Quote:
Originariamente inviato da fero86 Guarda i messaggi
giusto: gli operatori bitwise per forza di cose sono eager mentre quelli booleani sono lazy.
Bravo, una definizione ancora più precisa

@Mattyfog comunque sono cose che vengono spiegate (esattamente come ho scritto io) in qualsiasi libro di programmazione, anche al livello più elementare (cioè quelli che ti iniziano a spiegare i tipi e gli oggetti).
__________________

Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM
Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_
Gremo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Nothing ha un altro smartphone in progra...
Decisione storica ad Amburgo: i cittadin...
Questo è il nuovo motore elettric...
HUAWEI WATCH GT 6: lo smartwatch 'infini...
Fotografia con AI: ecco Caira, la macchi...
PlayStation 6 vs Xbox Magnus: il rumor s...
DJI Osmo Action 4 a soli 208€ su Amazon:...
Irion, la data governance diventa strate...
EHang VT35: debutta in Cina il nuovo aer...
Cooler Master MasterLiquid Atmos II 360:...
Trapela in rete la roadmap dei nuovi gio...
In Germania la prima centrale solare gal...
Iliad lancia TOP 250 PLUS e TOP 300 PLUS...
UE: nuovi standard per i caricabatterie,...
Fine supporto Windows 10: breve guida pr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v