Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
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


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...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Prosegue lo sviluppo del telescopio spaz...
28 astronauti cinesi hanno condotto un'e...
Dal Padiglione Italia al mercato globale...
POCO M8: display AMOLED luminoso, batter...
ECOVACS, tante novità a Las Vegas...
Caso Galaxy Ring difettoso: Samsung chiu...
Targa e assicurazione per monopattini el...
AI Cloud Protect: la soluzione di Check ...
Nuovo spettacolare video del razzo spazi...
Hisense presenta a CES 2026 il display M...
XPeng P7+ è pronta per l'Europa: ...
IKEA nuove lampade Matter annunciate al ...
Il telescopio Hubble potrebbe andare dis...
Hisense introduce RGB MiniLED evo (a qua...
Deumidificatore De'Longhi in offerta su ...
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: 05:30.


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