bonjour tout le monde
alors voila jai crée un code c pour traduire un code binaire de 8bit en un nombre decimal. le problème c’est que j’ai du crée 8 variables pour faire le code binaire et je veux en mettre qu’une ou deux maximum
est ce que quelqu’un pourrai m’aider a trouver la solution en mettant un for( ; ; ) ?car j’arrive pas a le faire et je bloque dessus
mon code c:
#include “stdafx.h”
#include “stdio.h”
void main()
{
signed short b1,b2,b3,b4,b5,b6,b7,b8,A;
printf("ecrire votre nombre binaire de 8bit\n");
scanf("%hu%hu%hu%hu%hu%hu%hu%hu",&b7,&b6,&b5,&b4,&b3,&b2,&b1,&b0);
A=b0+2*(b1+2*(b2+2*(b3+2*(b4+2*(b5+2*(b6+2*(b7+0)))))));
printf(" %hu ",A);
}
merci a ceux qui se donne la peine a m’aider
Edité le 20/10/2007 à 21:20
Juste parce que je suis taquin :
signed short t[8] = {};
signed short A;
printf("ecrire votre nombre binaire de 8bit\n");
scanf("%hu%hu%hu%hu%hu%hu%hu%hu",t+7,t+6,t+5,t+4,t+3,t+2,t+1,t+0);
A=t[0]+2*(t[1]+2*(t[2]+2*(t[3]+2*(t[4]+2*(t[5]+2*(t[6]+2*(t[7]+0)))))));
printf(" %hu ",A);
(d’aucun dirait que ça revient au même, hu hu :D)
hum ton code ne m’arrange pas spécialement ! car c’est quasi le meme que le mien
mon butest de pouvoir mettre un for pour avoir une seule variable dans le scanf
Un truc dans ce genre :
unsigned char a = 0;
for (int i = 0; i < CHAR_BIT; ++i) {
char c = '0';
if (1 != fscanf('%c', &c)) {
break; // erreur
}
c <<= 1;
if (c == '1') {
c |=(unsigned char) 0x01;
}
}
arf j’arrive pas a tout a comprendre mais c’est pas grave je vais essayer de trouver une solution
merci quand meme
Bah
Dans le cas des puissance de 2,
i * 2 <=> i <<= 1
En outre: tu demande un chiffre (0 ou 1), tu décalle à gauche, c’est à dire tu multiplies le nombre courant par 2, puis si c’est un “1”, tu change le bit le plus à droite (sous réserve de l’architecture, mais bref, …) pour un 1. Et c’est tout