Originariamente inviato da Ov3rLo4d
Questo è il testo del problema:
/* Scrivere un programma per convertire un numero intero positivo
* minore di 255 in binario. Non si possono usare vettori.
*
* Suggerimento : sapendo che il numero e' minore di 256
* dividere per tutte le potenze da 2^7 a 1 ...
*
* L'output del programma, seguendo questo approccio, sara'
* sempre su 8 bit:
* Es. 25 = 00011001
*/
che non ho capito nemmeno molto bene la parte del suggerimento...
...
ma scusate, siete sicuri che abbia la conoscenza per comprendere quello che gli proponete?
Segui la via più semplice
codice:
#include <stdio.h>
int main ()
{
int num = 4;
// bit 8
// se la divisione per 128 vale 1 allora è 1, altrimenti 0
int bit8;
if (num / 128 == 1) bit8 = 1;
else bit8 = 0;
// prendi il resto della divisione
num = num % 128;
// bit 7
// se la divisione per 64 vale 1 allora è 1, altrimenti 0
int bit7;
if (num / 64 == 1) bit7 = 1;
else bit7 = 0;
// prendi il resto della divisione
num = num % 64;
// bit 6
// se la divisione per 32 vale 1 allora è 1, altrimenti 0
int bit6;
if (num / 32 == 1) bit6 = 1;
else bit6 = 0;
// prendi il resto della divisione
num = num % 32;
// bit 5
// se la divisione per 16 vale 1 allora è 1, altrimenti 0
int bit5;
if (num / 16 == 1) bit5 = 1;
else bit5 = 0;
// prendi il resto della divisione
num = num % 16;
// bit 4
// se la divisione per 8 vale 1 allora è 1, altrimenti 0
int bit4;
if (num / 8 == 1) bit4 = 1;
else bit4 = 0;
// prendi il resto della divisione
num = num % 8;
// bit 3
// se la divisione per 4 vale 1 allora è 1, altrimenti 0
int bit3;
if (num / 4 == 1) bit3 = 1;
else bit3 = 0;
// prendi il resto della divisione
num = num % 4;
// bit 2
// se la divisione per 2 vale 1 allora è 1, altrimenti 0
int bit2;
if (num / 2 == 1) bit2 = 1;
else bit2 = 0;
// prendi il resto della divisione
num = num % 2;
// bit 1
// se la divisione per 1 vale 1 allora è 1, altrimenti 0
int bit1;
if (num / 1 == 1) bit1 = 1;
else bit1 = 0;
printf("%d%d%d%d%d%d%d%d\n",bit8,bit7,bit6,bit5,bit4,bit3,bit2,bit1);
return (0);
}
ciao
sergio