Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-06-2007, 22:19   #1
Dr.Speed
Senior Member
 
L'Avatar di Dr.Speed
 
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
[assembly]contare gli 0 in un numero binario

devo fare un esercizio in assembly, solo che non ho la piu pallida idea di come, il testo dice: " data una word contare il numero di bit a "0""

credo si usi lo shift per spostare il binario, ma non saprei come
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW
\_\_\_\_\_DrSpeed_/_/_/_/_/
Dr.Speed è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2007, 23:53   #2
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
devi usare una maschera e giocare con lo shift. scegli tu se shiftare la maschera o la word data.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2007, 23:55   #3
Dr.Speed
Senior Member
 
L'Avatar di Dr.Speed
 
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
scusa l'ignoranza, ma cos'è una maschera?
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW
\_\_\_\_\_DrSpeed_/_/_/_/_/
Dr.Speed è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2007, 09:15   #4
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Una maschera è ad esempio un numero binario in cui hai un uno e il resto zero.

Puoi contare gli zeri facendo una and bit a bit con il tuo dato, di volta in volta spostando l'uno nella maschera. Se l'and ti restituisce 0 hai uno zero nella posizione indicata dalla maschera

Un esempio:
numero
10100

Maschera (Al primo passaggio)
100

101 and 100=100->al primo posto non c'è uno zero

Shift sulla maschera 010
101 and 010=000->al secondo posto c'è uno zero, incremento il contatore

Shift sulla maschera 001
101 and 001=001->al terzo posto non c'è uno zero
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2007, 12:59   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Dr.Speed Guarda i messaggi
devo fare un esercizio in assembly, solo che non ho la piu pallida idea di come, il testo dice: " data una word contare il numero di bit a "0""
Ci sono diverse strade per fare questo:

Soluzione A:
Utilizzi una "maschera", cioè un valore in cui c'è sempre solo un bit a '1' che sposti verso una direzione che scegli tu. Fai quindi una AND tra questa maschera e il tuo valore di input. Il risultato sarà un valore di 0 o diverso da 0. Quindi ti basta contare quante volte ottieni un valore di 0.
Naturalmente si può anche fare lo shift sul tuo valore di input e tenere ferma la maschera.

Soluzione B:
A dire il vero una maschera non servirebbe nemmeno se si lavora in assembly. Già ... perché basta tenere presente che quando si fa uno shift, il bit che "esce" va a finire nel flag di "carry". Pertanto ti basta fare un ciclo, shiftare il tuo valore di input e controllare il flag di carry.

Soluzione C:
Ci sarebbe un'altra soluzione che sfrutta un trucchetto forse non molto noto. È possibile eliminare il primo bit '1' più a destra (in qualunque posizione sia) facendo X AND (X-1). Questo permetterebbe di contare i bit a '1' (ovviamente facendo un ciclo). Se a te serve contare i bit a '0' farai N-c dove N è il numero totale dei bit e c il conto dei bit a '1'.
Tra l'altro questa è la soluzione più veloce se ci sono pochi bit a '1' nel valore.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2007, 16:29   #6
Dr.Speed
Senior Member
 
L'Avatar di Dr.Speed
 
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
Quote:
Originariamente inviato da andbin Guarda i messaggi
Ci sono diverse strade per fare questo:

Soluzione A:
Utilizzi una "maschera", cioè un valore in cui c'è sempre solo un bit a '1' che sposti verso una direzione che scegli tu. Fai quindi una AND tra questa maschera e il tuo valore di input. Il risultato sarà un valore di 0 o diverso da 0. Quindi ti basta contare quante volte ottieni un valore di 0.
Naturalmente si può anche fare lo shift sul tuo valore di input e tenere ferma la maschera.

Soluzione B:
A dire il vero una maschera non servirebbe nemmeno se si lavora in assembly. Già ... perché basta tenere presente che quando si fa uno shift, il bit che "esce" va a finire nel flag di "carry". Pertanto ti basta fare un ciclo, shiftare il tuo valore di input e controllare il flag di carry.

Soluzione C:
Ci sarebbe un'altra soluzione che sfrutta un trucchetto forse non molto noto. È possibile eliminare il primo bit '1' più a destra (in qualunque posizione sia) facendo X AND (X-1). Questo permetterebbe di contare i bit a '1' (ovviamente facendo un ciclo). Se a te serve contare i bit a '0' farai N-c dove N è il numero totale dei bit e c il conto dei bit a '1'.
Tra l'altro questa è la soluzione più veloce se ci sono pochi bit a '1' nel valore.
la soluzione B mi sembra la piu facile, pero come posso controllare il CF? comparandolo mi esce un errore, c'e un istruzione apposita?




grazie ad entrambi per le spiegazioni molto dettagliate
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW
\_\_\_\_\_DrSpeed_/_/_/_/_/
Dr.Speed è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2007, 16:39   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Dr.Speed Guarda i messaggi
la soluzione B mi sembra la piu facile, pero come posso controllare il CF? comparandolo mi esce un errore, c'e un istruzione apposita?
Innanzitutto, visto che non l'hai specificato fin dall'inizio, di quali processori stiamo parlando?? x86?

Nell'assembly x86 c'è il salto condizionato JC, basato appunto sul carry. A partire dai 386 (ormai superati da un pezzo ) puoi usare SETC r/m8, in base al carry assegna 1 oppure 0 al registro o locazione specificata. Ti può servire appunto come valore da aggiungere al tuo conteggio ... e nota, evita un salto condizionato.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2007, 16:43   #8
Dr.Speed
Senior Member
 
L'Avatar di Dr.Speed
 
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
si, scusami stiamo parlando di x86
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW
\_\_\_\_\_DrSpeed_/_/_/_/_/
Dr.Speed è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2007, 19:35   #9
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Codice:
	mov	ax,[value]
	mov	cx,10h
	xor	dx,dx
loop_zbit:
	shr	ax,1h
	cmc
	adc	dl,dh
	loop	loop_zbit
repne scasb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Osservata esplosione di raggi gamma (GRB...
Sean Duffy (amministratore ad interim de...
Renault lancia la super promo: porte ape...
Il tuo portatile ASUS ROG non funziona c...
Zoom migliora il suo operatore virtuale ...
Traguardo Omoda & Jaecoo in Italia: ...
EHT mostra nuove immagini di come cambia...
Il gioiellino di Fastned: aperti in Belg...
La nuova mini workstation AI di MinisFor...
Formula 1 2026, nuove gare Sprint in cal...
MacBook Pro con display OLED e supporto ...
Poste Italiane: dati di milioni di utent...
Microsoft blocca RaccoonO365, rubate olt...
15 anni dopo Skate 3, il gioco torna sot...
Molte novità per MongoDB: version...
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: 23:24.


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