Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-09-2006, 21:15   #1
gerigot2
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 5
aiuto per un compito convertitore decimale binario 8bit (da 0 a 255)

Salve a tutti io ho un problema a scuola abbiamo iniziato a fare programmazione con CVI vorrei sapere che funzione devo utilizzare per dirgli quale numero far uscire qui di seguito vi metto un esempio con il programma che ho fatto ma che non è completo:

/*
Dato un numero decimale da 0 a 255
calcolare il corrispondente numero binario
*/

#include <userint.h>
#include <ansi_c.h>


void main(void) //inizio del programma


{

double decimale; //dati utente

double bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8; // dati da calcolare

char dati[1500];

//immissione dei dati

PromptPopup ("immissione del numero decimale","inserisci un numero da 0 a 255",dati,3);

decimale = atof(dati);

//elaborazione dati

bit8=decimale/2.0;

bit7=bit8/2.0;

bit6=bit7/2.0;

bit5=bit6/2.0;

bit4=bit5/2.0;

bit3=bit4/2.0;

bit2=bit3/2.0;

bit1=bit2/2.0;


//emissione del risultato

sprintf(dati,"numero decimale:\n"
"%.3f\n\n"
"numero binario:\n"
"%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f",decimale,bit8,bit7,bit6,bit5,bit4,bit3,bit2,bit1);

MessagePopup ("risultato",dati);






}

nella parte dell'elaborazione dati come posso far per far tenere alla variabile solo un valore 1 se il risultato della divisione da un numero con la virgola, e uno 0 se non c'è la virgola?
grazie mille in anticipo

Ultima modifica di gerigot2 : 19-09-2006 alle 21:39.
gerigot2 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2006, 21:55   #2
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
unpò troppo macchinoso come metodo per cambiare di base un numero!!!
Quando devo convertire un decimale in binario, devi dividere per due e poi prendere il resto della divisione.!.

18/2 = 9 | 0
9 /2 = 4 | 1
4 /2 = 2 | 0
2 / 2 = 1 | 0
1 ***** |1

ricostruendo il numero dal basso verso l'alto.!.

18 = 10010

Esiste l'operatore mod " % " che restituisce il resto di una divisione.!.

poi secondo me è molto meglio creare il risultato inserendo i vari resti in una stringa! e poi invertirla prima di ritornarla.!.
__________________
L'unico computer sicuro è un computer spento!!!
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2006, 22:02   #3
gerigot2
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 5
ah grazie come si utilizza il % perchè il nostro professore ci ha chiesto questo compito ma noi non abbiamo mai utilizzato il %

grazie mille ancora
gerigot2 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 04:56   #4
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
ritorna il resto della divisione... è un semplice operatore.!.

per esemio

5/2 -> quoziente = 2, resto = 1;
ecco, facendo 5%2 otterrai 1...
Cioè ritorna il resto della divisione se al posto del % ci fosse /...

per esempio in questo modo puoi anche controllare se un numero è pari ...
Codice:
if((x%2)==0)
//è pari
else
//è dispari
Spero di essere stato chiaro nella spiegazione.!.
Ciao
__________________
L'unico computer sicuro è un computer spento!!!
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 11:13   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
da base 10 a base 2, ho capito bene? io l'algoritmo lo farei così:
Codice:
#include <stdlib.h>
#include <stdio.h>

int main() {
	int Correct = 0;
	int Number;

	while (!Correct) {
		printf("Inserire numero (0, 255): ");
		if (scanf("%d", &Number) == 1) {
			Correct = (Number >= 0) && (Number <= 255);
		}
	}

	while (Number) {
		printf("%d", Number % 2);
		Number /= 2;
	}
	printf("\n");

	return 0;
}
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 11:15   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
a proposito, l'algoritmo che ti ho scritto può convertire in qualsiasi altra base fino alla 10, basta che nel secondo while cambi il 2 col numero della base.

EDIT: ehm, però ora che ci guardo c'è un errore
scrive le cifre al contrario -.-'

EDIT2: LOL, e c'è anche un altro errore
gestisce male lo zero ^^

Ultima modifica di 71104 : 20-09-2006 alle 11:20.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 11:30   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
corretto, va' :P
Codice:
#include <stdlib.h>
#include <stdio.h>

int main() {
	int Correct = 0;
	int Number;
	char Buffer[9];
	int Index;

	while (!Correct) {
		printf("Inserire numero (0, 255): ");
		if (scanf("%d", &Number) == 1) {
			Correct = (Number >= 0) && (Number <= 255);
		}
	}

	for (Index = 7; Index >= 0; Index--) {
		Buffer[Index] = (Number % 2) + '0';
		Number /= 2;
	}
	Buffer[8] = 0;
	printf("%s\n", Buffer);

	return 0;
}
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 11:33   #8
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Sicuro di dover convertire un numero in virgola mobile?

Comunque in C esistono operatori che agiscono sui bit, in poche parole

shift una cifra (binaria) alla volta:

num >> pos;

poi fai un AND con 1:

int cifra = ( num >> pos ) & 1

if( cifra == 1 ) ...
else ...

non ho provato, ma io lo imposterei cosi'.
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 11:34   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da lovaz
non ho provato, ma io lo imposterei cosi'.
vero, così non c'è bisogno del buffer che ho usato io.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 11:50   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
ma gli array e cicli non ve li ha spiegati il vostro prof ???
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 12:00   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
È sufficiente usare shift e and.
Codice:
int numero;
int m;

.... input del numero ....

for (m=128; m!=0; m>>=1)
    printf (numero & m ? "1" : "0");
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 12:08   #12
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
se non spieghi strutture condizionali, cicli ed array, soprattutto in C... .... ....
....
Eh si, pensandoci bene potresti fare solamente il famigerato "Hello World!"...

Ricordo un mio collega che era euforico quando è riuscito a scriverne il codice sorgente senza un errore.!. ah ah ah ah ah ah ...
Quante risate che mi sono fatto!!!!
__________________
L'unico computer sicuro è un computer spento!!!
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 13:57   #13
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
In effetti bastano degli shift e qualche and, quando torno a casa (se me ne ricordo ) magari metto un po' di codice qui, l'avevo fatto in passato e funzionava bene (71104, è anche in CAOS questo codice ).
__________________

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 20-09-2006, 14:10   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
E se uno volesse stampare il valore binario senza gli zeri non significativi, basta avere una ulteriore variabile int f; e poi fare:
Codice:
for (m=128,f=0; m!=0; m>>=1)
    printf ((f |= numero & m | m == 1) ? numero & m ? "1" : "0" : "");
Carina, no?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 14:47   #15
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
E se uno volesse stampare il valore binario senza gli zeri non significativi, basta avere una ulteriore variabile int f; e poi fare:
Codice:
for (m=128,f=0; m!=0; m>>=1)
    printf ((f |= numero & m | m == 1) ? numero & m ? "1" : "0" : "");
Carina, no?
si. Essenziale, come piace a me
Ti sei laureato in binariologia ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 19:29   #16
gerigot2
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 5
Ce l'ho fatta ma il programma alla fine quando elabora da ancora un problema adesso vi mostro quello che ho fatto:

/*
Dato un numero decimale da 0 a 255
calcolare il corrispondente numero binario
*/

#include <userint.h>
#include <ansi_c.h>
#include <math.h>



void main(void) //inizio del programma


{

int decimale; //dati utente

int bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8; // dati da calcolare

int bit01,bit02,bit03,bit04,bit05,bit06,bit07,bit08; // per fare i calcoli

char dati[1500];

//immissione dei dati

PromptPopup ("immissione del numero decimale","inserisci un numero da 0 a 255",dati,3);

decimale = atoi(dati);

//elaborazione dati

bit8=decimale%2;

bit08=decimale/2;

bit7=bit08%2;

bit07=bit08/2;

bit6=bit07%2;

bit06=bit07/2;

bit5=bit06%2;

bit05=bit06/2;

bit4=bit05%2;

bit04=bit05/2;

bit3=bit04%2;

bit03=bit04/2;

bit2=bit03%2;

bit02=bit03/2;

bit1=bit02%2;

bit01=bit02/2;


//emissione del risultato

sprintf (dati,"numero decimale:\n"

"%d\n\n"

"numero binario:\n"

"%d %d %d %d %d %d %d %d %d %d\n\n"

,decimale,bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8,);

MessagePopup ("risultato",dati);


}



lo so che è lungo, è un casino e in piu da un errore ma alla fine il risultato esce. ihih
se riuscite a dirmi che errore c'è...il programma mi sottolinea questa parte qui e mi dice :

NON-FATAL RUN-TIME ERROR: "decimale binario.c", line 68, col 1, thread id 0x00000E44: Not enough parameters or invalid parameter type.

sprintf (dati,"numero decimale:\n"

"%d\n\n"

"numero binario:\n"

"%d %d %d %d %d %d %d %d %d %d\n\n"

,decimale,bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8,);

MessagePopup ("risultato",dati);

Ultima modifica di gerigot2 : 20-09-2006 alle 20:08.
gerigot2 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 20:30   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da gerigot2
sprintf (dati,"numero decimale:\n"

"%d\n\n"

"numero binario:\n"

"%d %d %d %d %d %d %d %d %d %d\n\n"

,decimale,bit1,bit2,bit3,bit4,bit5,bit6,bit7,bit8,);

MessagePopup ("risultato",dati);
A parte il fatto che il main dovrebbe ritornare un int (e dovresti mettere un return qualcosa; ).
A parte il fatto che per la atoi bisognerebbe in teoria includere <stdlib.h> (anche se magari su qualche compilatore, potrebbe bastare math.h, ma questo non lo so) e che per la sprintf bisognerebbe includere <stdio.h>.
A parte il fatto che hai usato funzioni specifiche (che non conosco) per l'interazione con l'utente come PromptPopup e MessagePopup.

A parte tutto questo .... dovresti contare quanti %d hai messo rispetto ai parametri realmente passati!!!! Già perché ne hai messi di più.

Dopo tutto questo ... impara i cicli for .... per favore! Mi viene male a vedere tutte quelle divisioni.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 21:00   #18
gerigot2
Junior Member
 
Iscritto dal: Sep 2006
Messaggi: 5
scusami sai sono alle prime armi...cmq grazie per il suggerimento non so come mai ce ne siano cosi tanti e si che io li ho contati e bom si vede che era tardi quando l'ho fatto.
cmq adesso il programma funzione e non so neanche io il perche ma nel mio compilatore funziona tutto anche senza quelle due librerie.

grazie mille

Ultima modifica di gerigot2 : 20-09-2006 alle 21:20.
gerigot2 è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 23:15   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da andbin
A parte tutto questo .... dovresti contare quanti %d hai messo rispetto ai parametri realmente passati!!!! Già perché ne hai messi di più.
ma in realtà il codice che hai quotato l'ha sicuramente riscritto senza fare copia-incolla perchè così com'è non può funzionare visto che c'è un errore di sintassi :P
e nel riscriverlo ha messo due %d di troppo; cosa che se avesse fatto nel programma originario se ne sarebbe accorto subito a runtime visto che agli ultimi due %d verrebbero stampati valori arbitrari dallo stack (rispettivamente il return address e il frame pointer se ho fatto bene i conti).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2006, 08:32   #20
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da gerigot2
cmq adesso il programma funzione e non so neanche io il perche
questo é il bello dell'informatica
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Samsung conferma l'arrivo di tre variant...
Sottile, veloce e con un'ottima autonomi...
Il top di gamma compatto di OnePlus &egr...
Modificare l'indirizzo Gmail è finalment...
Perché le GeForce RTX con pi&ugra...
Più tempo online non equivale a più disa...
Amazon Weekend: iPhone 17 Pro, robot asp...
TV OLED 65'' top di gamma al 50%: 144Hz,...
Londra si prepara al terremoto 'intellig...
Scope elettriche in offerta su Amazon: f...
iPhone 17 Pro a un nuovo minimo storico ...
DJI Mini 4 Pro Fly More Combo a 859€ su ...
Roborock in offerta su Amazon: QV 35A e ...
Crisi della RAM: Intel rassicura sul mer...
Dreame taglia i prezzi su Amazon: L40 Ul...
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: 18:37.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v
Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.