Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-10-2005, 18:53   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Rappresentazione binaria

Ciao a tutti!!!

Devo scrivere un programma che dato in input un numero intero < 128 restituisca la sua rappresentazione binaria (senza usare while)

Esempio
Input: 35
Output: 00100011

Il problema è che oltre a non usare while, non devo usare né puntatori né array. E qui sta il problema.... come faccio (dopo aver ripetutamente diviso per due il numero) a restituire i resti nell'ordine inverso? Grazie.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:30   #2
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
A meno di errori grossolani:

Codice:
#include <stdio.h>

void main(void)

{
    int i;

    printf("Valore: ");
    scanf("%d",&i);

    switch (i)
    {
        case 0:
            printf("0000000");
            break;
        case 1:
            printf("0000001");
            break;
        case 2:
            printf("0000010");
            break;
        case 3:
            printf("0000011");
            break;
        case 4:
            printf("0000100");
            break;
        case 5:
            printf("0000101");
            break;
        case 6:
            printf("0000110");
            break;
        case 7:
            printf("0000111");
            break;
        case 8:
            printf("0001000");
            break;
        case 9:
            printf("0001001");
            break;
        case 10:
            printf("0001010");
            break;
        case 11:
            printf("0001011");
            break;
        case 12:
            printf("0001100");
            break;
        case 13:
            printf("0001101");
            break;
        case 14:
            printf("0001110");
            break;
        case 15:
            printf("0001111");
            break;
        case 16:
            printf("0010000");
            break;
        case 17:
            printf("0010001");
            break;
        case 18:
            printf("0010010");
            break;
        case 19:
            printf("0010011");
            break;
        case 20:
            printf("0010100");
            break;
        case 21:
            printf("0010101");
            break;
        case 22:
            printf("0010110");
            break;
        case 23:
            printf("0010111");
            break;
        case 24:
            printf("0011000");
            break;
        case 25:
            printf("0011001");
            break;
        case 26:
            printf("0011010");
            break;
        case 27:
            printf("0011011");
            break;
        case 28:
            printf("0011100");
            break;
        case 29:
            printf("0011101");
            break;
        case 30:
            printf("0011110");
            break;
        case 31:
            printf("0011111");
            break;
        case 32:
            printf("0100000");
            break;
        case 33:
            printf("0100001");
            break;
        case 34:
            printf("0100010");
            break;
        case 35:
            printf("0100011");
            break;
        case 36:
            printf("0100100");
            break;
        case 37:
            printf("0100101");
            break;
        case 38:
            printf("0100110");
            break;
        case 39:
            printf("0100111");
            break;
        case 40:
            printf("0101000");
            break;
        case 41:
            printf("0101001");
            break;
        case 42:
            printf("0101010");
            break;
        case 43:
            printf("0101011");
            break;
        case 44:
            printf("0101100");
            break;
        case 45:
            printf("0101101");
            break;
        case 46:
            printf("0101110");
            break;
        case 47:
            printf("0101111");
            break;
        case 48:
            printf("0110000");
            break;
        case 49:
            printf("0110001");
            break;
        case 50:
            printf("0110010");
            break;
        case 51:
            printf("0110011");
            break;
        case 52:
            printf("0110100");
            break;
        case 53:
            printf("0110101");
            break;
        case 54:
            printf("0110110");
            break;
        case 55:
            printf("0110111");
            break;
        case 56:
            printf("0111000");
            break;
        case 57:
            printf("0111001");
            break;
        case 58:
            printf("0111010");
            break;
        case 59:
            printf("0111011");
            break;
        case 60:
            printf("0111100");
            break;
        case 61:
            printf("0111101");
            break;
        case 62:
            printf("0111110");
            break;
        case 63:
            printf("0111111");
            break;
        case 64:
            printf("1000000");
            break;
        case 65:
            printf("1000001");
            break;
        case 66:
            printf("1000010");
            break;
        case 67:
            printf("1000011");
            break;
        case 68:
            printf("1000100");
            break;
        case 69:
            printf("1000101");
            break;
        case 70:
            printf("1000110");
            break;
        case 71:
            printf("1000111");
            break;
        case 72:
            printf("1001000");
            break;
        case 73:
            printf("1001001");
            break;
        case 74:
            printf("1001010");
            break;
        case 75:
            printf("1001011");
            break;
        case 76:
            printf("1001100");
            break;
        case 77:
            printf("1001101");
            break;
        case 78:
            printf("1001110");
            break;
        case 79:
            printf("1001111");
            break;
        case 80:
            printf("1010000");
            break;
        case 81:
            printf("1010001");
            break;
        case 82:
            printf("1010010");
            break;
        case 83:
            printf("1010011");
            break;
        case 84:
            printf("1010100");
            break;
        case 85:
            printf("1010101");
            break;
        case 86:
            printf("1010110");
            break;
        case 87:
            printf("1010111");
            break;
        case 88:
            printf("1011000");
            break;
        case 89:
            printf("1011001");
            break;
        case 90:
            printf("1011010");
            break;
        case 91:
            printf("1011011");
            break;
        case 92:
            printf("1011100");
            break;
        case 93:
            printf("1011101");
            break;
        case 94:
            printf("1011110");
            break;
        case 95:
            printf("1011111");
            break;
        case 96:
            printf("1100000");
            break;
        case 97:
            printf("1100001");
            break;
        case 98:
            printf("1100010");
            break;
        case 99:
            printf("1100011");
            break;
        case 100:
            printf("1100100");
            break;
        case 101:
            printf("1100101");
            break;
        case 102:
            printf("1100110");
            break;
        case 103:
            printf("1100111");
            break;
        case 104:
            printf("1101000");
            break;
        case 105:
            printf("1101001");
            break;
        case 106:
            printf("1101010");
            break;
        case 107:
            printf("1101011");
            break;
        case 108:
            printf("1101100");
            break;
        case 109:
            printf("1101101");
            break;
        case 110:
            printf("1101110");
            break;
        case 111:
            printf("1101111");
            break;
        case 112:
            printf("1110000");
            break;
        case 113:
            printf("1110001");
            break;
        case 114:
            printf("1110010");
            break;
        case 115:
            printf("1110011");
            break;
        case 116:
            printf("1110100");
            break;
        case 117:
            printf("1110101");
            break;
        case 118:
            printf("1110110");
            break;
        case 119:
            printf("1110111");
            break;
        case 120:
            printf("1111000");
            break;
        case 121:
            printf("1111001");
            break;
        case 122:
            printf("1111010");
            break;
        case 123:
            printf("1111011");
            break;
        case 124:
            printf("1111100");
            break;
        case 125:
            printf("1111101");
            break;
        case 126:
            printf("1111110");
            break;
        case 127:
            printf("1111111");
            break;
	default:
    	    printf("Valore non valido\n");
    }
}
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:39   #3
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Aaaah dovevo fare proprio in maniera "rudimentale" così?

Pensavo ci fosse qualche metodo... Grazie cmq
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:41   #4
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
void dec2bin(int numero){

int bin = 0, i = 0;

for(; numero > 0; numero /= 2, i++)
if(numero % 2)
bin += (int)pow((float)10, (float)i);

printf("%d", bin);
}




p.s. ovviamente va inclusa la libreria math.h
__________________
Code without tests is broken by design.

Ultima modifica di cj++ : 13-10-2005 alle 19:44.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:41   #5
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da Manugal
Pensavo ci fosse qualche metodo...
Ed infatti c'e'.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:46   #6
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ok ho capito che c'era il metodo però non pensavo fosse quello

x cj++:

Ho visto il tuo listato ma credo che quello che hai fatto tu non corrisponda alla conversione di un decimale in binario. Ad esempio 23 mi viene 10109. Cmq grazie.

Ultima modifica di Manugal : 13-10-2005 alle 19:50.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:48   #7
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
Quote:
Originariamente inviato da Manugal
x cj++:

Ho visto il tuo listato ma credo che quello che hai fatto tu non corrisponda alla conversione di un decimale in binario. Cmq grazie.

come no, bin contiene il numero in binario... se passi alla funzione 35 ti da 100011...
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:50   #8
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Se però passo ,ad esempio, 23 mi da 10109
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:52   #9
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Magari l'idea è anche giusta....
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:52   #10
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
con 23 a me da 10111, mi sa che ha qualche problema la tua macchina/IDE
Anche perche bin contiene solo potenze di 10 quindi il 9 fa fatica a saltar fuori


Corretto e sintetico



edit: hai inizializzato bin = 0? E' essenziale che lo sia.

edit 2: repne se fossi il tuo prof e tu mi consegnassi una cosa del genere te lo fare per valori della x fino a 65535
__________________
Code without tests is broken by design.

Ultima modifica di cj++ : 13-10-2005 alle 20:01.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:57   #11
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Boh non so che dirti a me tira fuori quel risultato.

Si si è inizializzato. Cmq uso il DevC++
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 20:05   #12
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
Quote:
Originariamente inviato da Manugal
Cmq uso il DevC++
Ecco questa è gia una potenziale causa
Cmq qlc di strano c'è perche bin puo assumere solo 0 e 1 come valori.

In ogni caso vai tranqui che è corretto
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 20:45   #13
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da cj++
edit 2: repne se fossi il tuo prof e tu mi consegnassi una cosa del genere te lo fare per valori della x fino a 65535
Premesso che il mio maestro di informatica e' deceduto nel 1991, non mi sognerei mai di scrivere un tale sorgente neanche fino a 16. Per questo motivo ho sviluppato un piccolo software che mi genera il sorgente, ossia un software che genera un software:

Codice:
#include <stdio.h>
#include <stdlib.h>

#define	N_BITS	16

void main(void)

{
	long i;
	char s[33];

	for(i=1L<<N_BITS;i<((1L<<(N_BITS+1)));i++)
	{
		printf("        case %ld:\n",i-(1L<<N_BITS));
		printf("            printf(\x22%s\x5Cn\x22);\n",itoa(i,s,2)+1);
		printf("            break;\n");
	}
}
P.S. itoa non e' ANSI.

---------------------------------------------------------------------------

Detto cio', questa e' una possibile variante (che avrebbe dovuto trovare l'utente Manugal):

Codice:
#include <stdio.h>

void main(void)

{
    int i,j;

    printf("Valore: ");
    scanf("%d",&i);

    for(j=128;j;j>>=1)
	printf("%c",i&j?'1':'0');
}
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 22:25   #14
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da repne scasb

Detto cio', questa e' una possibile variante (che avrebbe dovuto trovare l'utente Manugal):

Codice:
#include <stdio.h>

void main(void)

{
    int i,j;

    printf("Valore: ");
    scanf("%d",&i);

    for(j=128;j;j>>=1)
	printf("%c",i&j?'1':'0');
}

Geniale

Come al solito

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 22:40   #15
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
Quote:
un software che genera un software
...metaprogramming...


Quote:
Geniale Come al solito
Google rulez in effetti
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 22:46   #16
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da cj++

Google rulez in effetti
In che senso? C'è un link con lo stesso software?

Comunque repne si è sempre dimostrata in grado di trovare algoritmi efficientissimi per problemi molto + complicati di questo , quindi il suo valore è già consolidato a prescindere da tutto .

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 23:07   #17
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da cj++
Google rulez in effetti
Il codice e' assolutamente originale, e non copiato da altre fonti. Per completezza riporto anche il codice in assembly x86 la cui particolarita e' di non utilizzare salti condizionati (escluso l'uscita dal loop). Chi e' in grado di scrivere l'equivalente in C? (ossia senza IF).

Codice:
	mov	al,_i
	xor	bx,bx
	mov	cx,8h
loop_bit:
	rol	al,1h
	mov	bl,al
	and	bl,1h
	add	bl,'0'
	push	bx
	push	si

	call	_printf
	add	sp,4h

	dec	cx
	jne	loop_bit
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2005, 00:02   #18
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da repne scasb
Il codice e' assolutamente originale, e non copiato da altre fonti. Per completezza riporto anche il codice in assembly x86 la cui particolarita e' di non utilizzare salti condizionati (escluso l'uscita dal loop). Chi e' in grado di scrivere l'equivalente in C? (ossia senza IF).

Codice:
	mov	al,_i
	xor	bx,bx
	mov	cx,8h
loop_bit:
	rol	al,1h
	mov	bl,al
	and	bl,1h
	add	bl,'0'
	push	bx
	push	si

	call	_printf
	add	sp,4h

	dec	cx
	jne	loop_bit

E' un piacere leggerti, ti adoro rep, sei mitica............ ciao da okay
okay è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2005, 00:39   #19
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da Manugal
Ciao a tutti!!!

Devo scrivere un programma che dato in input un numero intero < 128 restituisca la sua rappresentazione binaria (senza usare while)

Esempio
Input: 35
Output: 00100011

Il problema è che oltre a non usare while, non devo usare né puntatori né array. E qui sta il problema.... come faccio (dopo aver ripetutamente diviso per due il numero) a restituire i resti nell'ordine inverso? Grazie.
Se puoi usare la ricorsione, lo fai in poche righe... Ma mi sa che non puoi!

Ciao
__________________
gica78r@ncc-1701:~$ tar -c
tar: Codardamente mi rifiuto di creare un archivio vuoto
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2005, 00:43   #20
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da repne scasb
Il codice e' assolutamente originale, e non copiato da altre fonti. Per completezza riporto anche il codice in assembly x86 la cui particolarita e' di non utilizzare salti condizionati (escluso l'uscita dal loop). Chi e' in grado di scrivere l'equivalente in C? (ossia senza IF).

Codice:
	mov	al,_i
	xor	bx,bx
	mov	cx,8h
loop_bit:
	rol	al,1h
	mov	bl,al
	and	bl,1h
	add	bl,'0'
	push	bx
	push	si

	call	_printf
	add	sp,4h

	dec	cx
	jne	loop_bit
sempre + spettacolare repne!!!
ke bello vedere ki nn t conosce ke fa certe insinuazioni!
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
I cosmonauti avrebbero riparato tutte le...
Artemis II: la NASA conferma il lancio d...
Il CEO di Embrak Studios difende l'uso d...
Il Trump Phone è sempre più un mistero: ...
OPPO ha svelato la serie Reno 15 "global...
Poste ID diventa a pagamento: l'identità...
7 articoli crollati di prezzo su Amazon ...
Lavatappeti, smacchiatore e Vaporella a ...
Prezzi a picco in 24 ore: due monitor to...
OLED top di gamma LG con super ribasso d...
Il nuovo OnePlus Nord 6 è vicino al debu...
Tesla svela i risultati del Q4: conferma...
Nuova rimodulazione da Fastweb: fino a 3...
La NVIDIA RTX 5090 potrebbe presto costa...
ASUS non produrrà più smar...
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: 06:54.


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