Forum Clubic

Aide code c Binaire-decimal

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 :slight_smile: