Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
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: 13028
| 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: 13028
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


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Recensione Corsair Harpoon v2 Wireless: ...
Nasce il primo OLED con film cristallino...
Altman smonta una delle più grand...
JVC HA-S59W in prova: le cuffie on-ear l...
Professore nasconde una trappola nel com...
I chip di NVIDIA attuali progettano quel...
HONOR Pad X9 Max debutta in Italia: disp...
Tutte le videocamere di sorveglianza e i...
Dreame Matrix10 Pro a 799€: robot aspira...
Grazie al Very Large Telescope abbiamo u...
S.T.A.L.K.E.R. 2: il DLC Cost of Hope ad...
I nuovi modelli di IA di Microsoft per l...
Come sta cambiando il mestiere dell'inst...
Meta sospende i test sull'abbonamento pe...
TCL OLED+ Pro X3B: monitor gaming o prof...
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: 15:54.


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