Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-03-2008, 17:33   #1
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
shiftare a dx e sx

Ciao ragazzi ho un dubbio.

Ho letto che shiftare a sinistra di n bit significa moltiplicare per 2^n

In particolare che cosa significa?

Se, per esempio io ho questo byte: 10111010 e lo voglio shiftare a sx di 3 bit che succede?
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 17:48   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
10111010 diventa 11010000
Ma io non direi che shiftare a sx "significa" moltiplicare per 2^n, diciamo che è un modo di vedere le cose, ma è molto più semplice pensare allo spostamento verso sx di tutti i bit
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 17:50   #3
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
10111010 diventa 11010000
Ma io non direi che shiftare a sx "significa" moltiplicare per 2^n, diciamo che è un modo di vedere le cose, ma è molto più semplice pensare allo spostamento verso sx di tutti i bit
capito. Grazie
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 18:05   #4
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da ciccio er meglio Guarda i messaggi
Ciao ragazzi ho un dubbio.

Ho letto che shiftare a sinistra di n bit significa moltiplicare per 2^n

In particolare che cosa significa?

Se, per esempio io ho questo byte: 10111010 e lo voglio shiftare a sx di 3 bit che succede?
Codice:
int main(int argc, char **argv)
{
         unsigned int value = 4;  /*  4 = 0000 0100 */  
         unsigned int shift = 2;

         value <<= shift;           /* 16 = 0001 0000 */  
         value <<= shift;           /* 64 = 0100 0000 */  

         printf("%d\n", value);    /* stampa 64 */  
         return 0;
}
Capito?
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 18:06   #5
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
10111010 diventa 11010000
Ma io non direi che shiftare a sx "significa" moltiplicare per 2^n, diciamo che è un modo di vedere le cose, ma è molto più semplice pensare allo spostamento verso sx di tutti i bit
Non è un modo di vedere le cose, è proprio la risultante dell'operazione di shifting dei bit a sinistra.
Poi ci sono molte considerazioni da fare sullo shifting logico e aritmetico, il troncamento, ecc. ecc. L'argomento è molto complesso se uno deve analizzarlo in dettaglio. Non in tutti i casi infatti il bit perso viene sostituito con uno 0.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 18:07   #6
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Quote:
Originariamente inviato da mjordan Guarda i messaggi
Codice:
int main(int argc, char **argv)
{
         unsigned int value = 4;  /*  4 = 0000 0100 */  
         unsigned int shift = 2;

         value <<= shift;           /* 16 = 0001 0000 */  
         value <<= shift;           /* 64 = 0100 0000 */  

         printf("%d\n", value);    /* stampa 64 */  
         return 0;
}
Capito?

Veramente no...comunque qual è il senso di shiftare a destra o sinistra i bit?
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 18:14   #7
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Quote:
Originariamente inviato da mjordan Guarda i messaggi
Codice:
int main(int argc, char **argv)
{
         unsigned int value = 4;  /*  4 = 0000 0100 */  
         unsigned int shift = 2;

         value <<= shift;           /* 16 = 0001 0000 */  
         value <<= shift;           /* 64 = 0100 0000 */  

         printf("%d\n", value);    /* stampa 64 */  
         return 0;
}
Capito?
ah forse ho capito. Se shifto 0000 0100 di due posizioni a sx diventa 0001 0000

Ed è come se l'avessi moltiplicato per 2 ^2

Comunque il ragionamento della moltiplicazione ha senso e si capisce solo se si usa un esempio con un byte che ha un solo 1 (cioé l'esempio che hai fatto tu). Altrimenti non si capisce nulla..
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 18:57   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Quote:
Originariamente inviato da mjordan Guarda i messaggi
Non è un modo di vedere le cose, è proprio la risultante dell'operazione di shifting dei bit a sinistra.
Non ho capito cosa intendi, o forse non mi sono fatto capire io nel mio intervento precedente. Intendevo dire che è molto più semplice vedere l'operazione di shift come uno spostamento dei bit che non come una moltiplicazione. Il fatto che il risultato sia lo stesso non implica che quello sia il suo "significato". Se invece intendi che al livello della macchina l'operazione eseguita è proprio quella della moltiplicazione, questo non lo sapevo ma mi sembra strano...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 19:11   #9
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Non ho capito cosa intendi, o forse non mi sono fatto capire io nel mio intervento precedente. Intendevo dire che è molto più semplice vedere l'operazione di shift come uno spostamento dei bit che non come una moltiplicazione. Il fatto che il risultato sia lo stesso non implica che quello sia il suo "significato". Se invece intendi che al livello della macchina l'operazione eseguita è proprio quella della moltiplicazione, questo non lo sapevo ma mi sembra strano...
Che io sappia le cpu non eseguono calcoli cosi complessi. Cioè la moltiplicazione la fanno ma emulata. Per esempio per fare 4x3 sommano 3 volte 4.

Comunque qual è il senso di shiftare a destra o sinistra i bit?

Da quello che ho capito non è che si fa una vera moltiplicazione o divisione con lo shift..
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 19:25   #10
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da ciccio er meglio Guarda i messaggi
Che io sappia le cpu non eseguono calcoli cosi complessi. Cioè la moltiplicazione la fanno ma emulata. Per esempio per fare 4x3 sommano 3 volte 4.
Nono, le cpu che abbiamo oggi eseguono la moltiplicazione proprio, ed eseguono algoritmi ben piu' complessi.
Esternamente gli si da il comando di moltiplicare 2 valori.
E lei esegue il tutto, senza scomporre l'operazione in altre operazioni come forse hai capito tu.

Elettricamente ci sono vari stadi della ALU della CPU che eseguono una moltiplicazione, e l'algoritmo logico che esegue e' quello della moltiplicazione che abbiamo imparato a fare alle elementari, solo fatto in base 2 invece che in base 10.

Quote:
Comunque qual è il senso di shiftare a destra o sinistra i bit?

Da quello che ho capito non è che si fa una vera moltiplicazione o divisione con lo shift..
be' e' una vera divisione o moltiplicazione, ma un po' particolare in quanto serve per moltiplicare o dividere solo per 2 o potenze.

Shiftare a destra di 1 bit significa dividere per 2.
Shiftare a sinistra di 1 bit significa moltiplicare per 2.
Al che se shifto di 2 bit a sinistra moltiplichero' 2 volte per 2, ovvero per 4
Se shifto di 3 bit a sinistra, allora moltiplichero' 3 volte per 2, ovvero per 8

Oggi e' quasi sempre piu' conveniente dividere per 3 direttamente, invece che farlo con gli shift a destra e le sottrazioni.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 20:00   #11
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Nono, le cpu che abbiamo oggi eseguono la moltiplicazione proprio, ed eseguono algoritmi ben piu' complessi.
Esternamente gli si da il comando di moltiplicare 2 valori.
E lei esegue il tutto, senza scomporre l'operazione in altre operazioni come forse hai capito tu.

Elettricamente ci sono vari stadi della ALU della CPU che eseguono una moltiplicazione, e l'algoritmo logico che esegue e' quello della moltiplicazione che abbiamo imparato a fare alle elementari, solo fatto in base 2 invece che in base 10.


be' e' una vera divisione o moltiplicazione, ma un po' particolare in quanto serve per moltiplicare o dividere solo per 2 o potenze.

Shiftare a destra di 1 bit significa dividere per 2.
Shiftare a sinistra di 1 bit significa moltiplicare per 2.
Al che se shifto di 2 bit a sinistra moltiplichero' 2 volte per 2, ovvero per 4
Se shifto di 3 bit a sinistra, allora moltiplichero' 3 volte per 2, ovvero per 8

Oggi e' quasi sempre piu' conveniente dividere per 3 direttamente, invece che farlo con gli shift a destra e le sottrazioni.
quindi nel mio caso shiftando 10111010 di 3 posizioni a sinistra è come se lo moltiplicassi per 2^3 cioè per 8. Ma come faccio a verificare questa regola?

praticamente dovrei ottenere 11010 000. Come faccio ad ottenere ciò?

devo moltiplicare 10111010 per 00001000???
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 20:06   #12
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da ciccio er meglio Guarda i messaggi
quindi nel mio caso shiftando 10111010 di 3 posizioni a sinistra è come se lo moltiplicassi per 2^3 cioè per 8. Ma come faccio a verificare questa regola?

praticamente dovrei ottenere 11010 000. Come faccio ad ottenere ciò?

devo moltiplicare 10111010 per 00001000???

Beh, ti sei gia' mangiato qualcosa shiftando, fallo con numeri piu' piccoli, oppure prevedi un po' di spazio per i bit a 1 che escono a sinistra.

tipo
0000 0000 1011 1010
Shiftato a sinistra di 3, che equivale a moltiplicare per 8, ottieni
0000 0101 1101 0000

Se si come trasformare da base 2 a base 10 puoi fare la prova.
Altrimenti ti fidi... (PS: Se sei proprio nella c...a, puoi sempre provare ad usare la calcolatrice scientifica di windows)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 20:14   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da ciccio er meglio Guarda i messaggi
Ciao ragazzi ho un dubbio.

Ho letto che shiftare a sinistra di n bit significa moltiplicare per 2^n

In particolare che cosa significa?

Se, per esempio io ho questo byte: 10111010 e lo voglio shiftare a sx di 3 bit che succede?
In QUESTO caso ottieni lo stesso risultato della moltiplicazione per 8.

Comunque le operazioni di shifting sono "particolari": molti linguaggi non specificano in maniera precisa cosa succede, e "demandano" tutto al compilatore e/o all'architettura su cui sta girando l'applicazione.
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Oggi e' quasi sempre piu' conveniente dividere per 3 direttamente, invece che farlo con gli shift a destra e le sottrazioni.
No no: la divisione rimane ancora la "bestia nera" dei calcolatori, e richiede parecchi cicli di clock per poter essere portata a termine (rispetto a somma, sottrazione, shift, ma anche alla stessa moltiplicazione).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 20:27   #14
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Se sai come trasformare da base 2 a base 10 puoi fare la prova.
Altrimenti ti fidi... (PS: Se sei proprio nella c...a, puoi sempre provare ad usare la calcolatrice scientifica di windows)
Ok ci provo:

10111010 x 00001000 <=> 186 x 8

186*8=1488 che in binario fa 10111010000

Eliminando i primi 3 bit ottengo 11010000!

Ok credo di aver capito


PS. Percaso anche voi state studiando calcolatori?
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!

Ultima modifica di ciccio er meglio : 28-03-2008 alle 20:29.
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 20:32   #15
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da ciccio er meglio Guarda i messaggi
Ok ci provo:

10111010 x 00001000 <=> 186 x 8

186*8=1488 che in binario fa 10111010000

Eliminando i primi 3 bit ottengo 11010000!

Ok credo di aver capito


PS. Percaso anche voi state studiando calcolatori?
Ok.
No comunque calcolatori l'ho gia' dato.
12 anni fa piu' o meno



Quote:
Originariamente inviato da cdimauro Guarda i messaggi
No no: la divisione rimane ancora la "bestia nera" dei calcolatori, e richiede parecchi cicli di clock per poter essere portata a termine (rispetto a somma, sottrazione, shift, ma anche alla stessa moltiplicazione).
Mmmh.
Forse dividere per 3 resta piu' vantaggioso con shift e sottrazioni.
Ma quando i bit ad uno sono piu' di 2 secondo me non conviene o siamo al pelo.

Quote:
On Core 2 CPUs, division operations process two bits per clock cycle. The new divider circuit implemented on Penryn is able to process four bits per clock cycle, meaning it is two times faster on division operations that Core 2 CPUs.
La divisione a 32bit sulle CPU nuove ci impiega quindi 8 cicli!!! E a naso stalla meno registri di usare solo shift e sottrazioni.
Sono anni che comunque non "lavoro" piu' con l'ASM cosi' a basso livello, quindi potrei sbagliare.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 20:39   #16
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
In effetti soli 8 cicli di clock è un notevole risultato per la divisione. Ottima architettura quella di Penryn.

Comunque per valori piccoli o con pochi "bit a 1", come dicevi, non è conveniente.

x ciccio: anch'io ho dato l'esame di architetture degli elaboratori una dozzina d'anni fa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 28-03-2008, 21:17   #17
ciccio er meglio
Senior Member
 
L'Avatar di ciccio er meglio
 
Iscritto dal: Sep 2001
Messaggi: 4834
Vedo con piacere che ancora ricordate queste cose. Bene bene, vuol dire che a qualche cosa vi sono servite

Grazie per l'aiuto
__________________
Amareggiato per la chiusura di mezzo forum Off-topic. Riapritelooo!
ciccio er meglio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
Hitman: Absolution si prepara al debutto...
ROG XBOX Ally X20 disponibile in Italia:...
Un banner pubblicitario può bastare per ...
Elon Musk è riuscito a farci (far...
Microsoft svela MAI-Base-2, un modello M...
Offerte Amazon fino al -50%: AirPods Pro...
Engwe fa sul serio: e-bike economica con...
La PEC italiana punta all'Europa: Aruba ...
Meta rilascia Muse Spark Open: per esegu...
Da Apple a Nvidia, le invenzioni tecnolo...
NVIDIA Hyperion sulle future Volvo: la c...
Xiaomi 17T e 17T Pro in offerta Amazon: ...
NASA e JAXA insieme per esplorare le lun...
Segnali una falla e rischi un reato: il ...
Haier, TV 4K in offerta su Amazon: QLED ...
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: 13:28.


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