Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Google Pixel Watch 5 ha affinato una formula già convincente con hardware più veloce, Gemini offline e nuovi strumenti per sport e benessere. Abbiamo provato la versione LTE da 41 mm, comoda anche di notte e ben proporzionata sui polsi piccoli. Il design resta un punto di forza, ma l'autonomia premia ancora il 45 mm e alcune funzioni AI non sono disponibili in Italia: ecco che cosa cambia rispetto a Watch 4 e quale formato conviene scegliere oggi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-01-2009, 15:43   #1
cocca81
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 3
[C] come utlizzare al meglio la memoria

Ciao.
devo leggere da un file quante volte un carattere è ripetuto se consecutivo, per poi scriverlo in un file nuovo ad esempio: aaabb ccd...ecc ecc, diventerà 3a2b(spazio)2c1d...ecc. e fin qui è tutto facile. Per il docente
questa è considerata un'implementazione banale, perchè viene utilizzato un carattere (1 char, ovvero 1 byte) per ogni cifra del numero di occorrenze del carattere da ripetere; quindi devo utilizzare al meglio la memoria per quanto riguarda la memorizzazione delle cifre. Mi sono
documentata sull'aritmetica binaria, ad esempio i numeri da 0 a 3,
li posso rappresentere con 2 bit, quelli da 4 a 7 con 3 bit,da 8 a 15 con 4 bit e così via, ma non riesco a capire come posso implemetare questa soluzione.
Cmq avrei anche già creato una lista:
struct carattere
{
char carat; //carattere che leggo dal file
int NumVolRip; //conta quante volte un carattere è consecutivo
struct carattere *next;

};
Potrebbe già andare bene così?
Grazie per l'aiuto!!! Ciao ciao
cocca81 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2009, 16:14   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
perchè viene utilizzato un carattere (1 char, ovvero 1 byte) per ogni cifra del numero di occorrenze del carattere da ripetere
Spiega meglio cosa fai attualmente
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2009, 18:27   #3
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Stai facendo una sorta di RLE, insomma... be', se utilizzi un formato di questo tipo:
Codice:
48a
per dire che ci sono 48 caratteri 'a' uguali e consecutivi tra di loro, puoi semplicemente evitare di codificare il tutto in ASCII e scrivere un solo byte che vale quante sono le ripetizioni (che occupa 8 bit e potrà quindi rappresentare un numero da 0 a 255: ma dal momento che 0 è un valore impossibile nel tuo caso, puoi prendere il tutto e considerarlo incrementato di 1 per riuscire a contare da un minimo di 1 ad un massimo di 256 ripetizioni). Non credo che ti serva affatto una struttura dati per conservare queste informazioni... a meno che non sia un requisito dell'esercizio.

Spero di non aver capito male il tuo problema o di averti confuso più che aiutato... in bocca al lupo.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 09:03   #4
Apollo86
Senior Member
 
L'Avatar di Apollo86
 
Iscritto dal: Jan 2003
Città: La Spezia
Messaggi: 753
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Stai facendo una sorta di RLE, insomma... be', se utilizzi un formato di questo tipo:
Codice:
48a
per dire che ci sono 48 caratteri 'a' uguali e consecutivi tra di loro, puoi semplicemente evitare di codificare il tutto in ASCII e scrivere un solo byte che vale quante sono le ripetizioni (che occupa 8 bit e potrà quindi rappresentare un numero da 0 a 255: ma dal momento che 0 è un valore impossibile nel tuo caso, puoi prendere il tutto e considerarlo incrementato di 1 per riuscire a contare da un minimo di 1 ad un massimo di 256 ripetizioni). Non credo che ti serva affatto una struttura dati per conservare queste informazioni... a meno che non sia un requisito dell'esercizio.

Spero di non aver capito male il tuo problema o di averti confuso più che aiutato... in bocca al lupo.
Si, ma se le ripetizioni superano il valore di 256? Non ti basta più 1 byte ....
Apollo86 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 09:40   #5
rеpne scasb
Senior Member
 
Iscritto dal: May 2008
Messaggi: 533
■

Ultima modifica di rеpne scasb : 18-06-2012 alle 15:20.
rеpne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 10:00   #6
Apollo86
Senior Member
 
L'Avatar di Apollo86
 
Iscritto dal: Jan 2003
Città: La Spezia
Messaggi: 753
Quote:
Originariamente inviato da rеpne scasb Guarda i messaggi
Non è completamente esatto.
Ciao

puoi approfondire il tuo intervento? detto così non mi aiuti a comprendere il mio errore ne tantomeno "cocca81" a risolvere il suo quesito

grazie
Apollo86 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 10:16   #7
rеpne scasb
Senior Member
 
Iscritto dal: May 2008
Messaggi: 533
■

Ultima modifica di rеpne scasb : 18-06-2012 alle 15:21.
rеpne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 11:03   #8
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Quote:
Originariamente inviato da rеpne scasb Guarda i messaggi
E' vero. Ho pero' suscitato la tua curiosita'.

In sostanza:

Si possono utilizzare i valori compresi tra 0 e 254 (1 byte) per indicare il numero di ripetizioni comprese tra 1 e 255, il valore 255 (0FFh) lo si puo' riservare come codice speciale indicante che il numero di ripetizioni e' un numero che necessita di 2 byte per poter essere rappresentato. Ad esempio, si vogliano rappresentare i seguenti valori:

17 -> |16|
100 -> |99|
1 -> |0|
255 -> |254|
256 -> |255|0|0|
300 -> |255|44|0|
1000 -> |255|232|2|
10000 -> |255|16|38|

Questa tecnica e' conveniente se sono molti i valori minori di 255 e pochi i valori maggiori di 255, altrimenti conviene una codifica a 2 byte.
Quoto... se i numeri però sono soprattutto bassi (< 500) si potrebbe fare meglio:
Il valore 255 significa che il numero "continua" sul prossimo byte, e che il suo valore è 255 + il valore del prossimo byte.
In questa maniera si possono fare "catene", tipo |255|255|10| = 523.
Questo approccio ha il vantaggio che puoi salvare numeri grossi quanto ti pare, però per numeri grandi è meglio come fa repne scasb.

potresti allora riservare 255 per dire che il numero è composto da altri due bytes da leggere insieme, e 254 per dire che c'è ancora un byte.
Così combineresti entrambi i vantaggi, penso
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 11:06   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Diciamo che si può fare tutto e il contrario di tutto, dipende dalla distribuzione in frequenza delle sequenze.
Ad esempio si potrebbe pensare ad una codifica differenziale.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 11:35   #10
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da Apollo86 Guarda i messaggi
Si, ma se le ripetizioni superano il valore di 256? Non ti basta più 1 byte ....
Come al solito, non c'è mai un'unica strada che puoi percorrere, la mia era giusto un'idea abbozzata.
Possiamo elaborarla:
  1. spezzi le ripetizioni ogni volta che raggiungi i 256 caratteri ed inserisci in coda una nuova serie di ripetizioni per lo stesso carattere (esempio: carattere 'a' ripetuto 260 volte → |255|a|3|a)
  2. utilizzi una codifica come quella di repne scasb che si adatta "dinamicamente" al numero di ripetizioni
  3. utilizzi una forma |n|byte1..n|carattere|, dove n indica la lunghezza della serie di byte che lo seguono, i quali a loro volta rappresentano il numero delle ripetizioni del carattere salvato alla fine (ad esempio per 65536 ripetizioni di 'a' → |2|255|255|a, che viene valutato come 256 * 256).

Preciso che nella 3) avresti dei numeri pesati a seconda della loro posizione. Nell'esempio che ti ho fatto per 65536 ripetizioni ti bastano 3 byte: il primo indica che il numero è lungo 2 byte. Questi ultimi due sono c1 e c0, che valgono 255 e 255. Il risultato è quindi (256^(n-1) * c1) + (256^(n-2) * c0) + 1 = (256^1 * 255) + (256^0 * 255) + 1 = 65280 + 255 + 1 = 65536.
Credo si possa risparmiare un ulteriore byte, ma al momento ho altro a cui pensare.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 18-01-2009 alle 12:15.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 12:03   #11
cocca81
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 3
Grazie per tutti gli interventi!!! Quindi devo cmq sempre costruire una lista!?? Ma però nel tuo modo, non riesco a capire come devo impostare la struttara dati! cmq oggi pomeriggio mi ci rimetto dietro!!!
cocca81 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 12:14   #12
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Non credo ti servano né una lista né una struttura dati di appoggio, basta un contatore per le ripetizioni consecutive e una funzione di "codifica".
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
Non buttare il tuo vecchio smartphone: l...
GTA VI, manca sempre meno al lancio: Roc...
Honor prepara il suo primo pieghevole la...
Starshield torna operativo per le forze ...
La NASA porta le batterie allo stato sol...
Finto mining di criptovalute: 200 vittim...
AI sul PC senza passare dal cloud, come ...
ASUS aggiorna la sua gamma di monitor da...
Android potrà spegnere e riavviare il PC...
Quale capienza di micro SD è la p...
TSMC valuta il Texas per nuove fab, trat...
YouTube Music introduce nuove etichette ...
Questa foto non è intelligenza artificia...
AliExpress lancia Elite: sconti del 5% e...
007 First Light arriva su Nintendo Switc...
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: 20:24.


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