Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir Binaire vers decimal et decimal vers binaire

Projet : Programme de conversion par choix

3 janvier 2013 à 22:32:04

Bonjour a tous et a toutes,

Je cherche a crée un petit programme me permettant de convertir des nombres binaire en décimal et inversement.

Voici le programme que j'ai pu jusqu'a la réaliser :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace decimal_binaire
{
    class Program
    {
        static void Main(string[] args)
        {
            //Initialisation des variables
            int choix, y;
            string nbre_decimal;
            

            Console.WriteLine("1.Binaire_Decimal");
            Console.WriteLine("2.Decimal_Binaire");

            do
            {
                //Choix 
                Console.WriteLine("Quel type de conversion voulez vous réaliser ?");
                choix = int.Parse(Console.ReadLine());

                if (choix != 1 || choix != 2)
                {
                    Console.WriteLine("Veuillez entrez sois 1 sois 2 pour faire votre choix");
                }
            } while (choix != 1 || choix != 2);

            if (choix == 1) // Conversionaire binaire vers decimal
            {
                

                Console.WriteLine("Veuillez entrez une valeur binaire");
                y = int.Parse(Console.ReadLine());

                while (y > 0) ;
                {

                    if (y % 2 == 0)
                    {
                        nbre_decimal += "0";

                    }

                    else
                    {
                        nbre_decimal = nbre_decimal + "1";
                    }

                    y = y / 2;
                }
            }

            else
            {
                //Conversion Decimal vers binnaire
            }

            Console.ReadKey();
        }
    }
}


Je n'arrive pas a comprendre pourquoi VB me dit que nbre_decimal n'est pas assigner...

Et j'aimerais savoir comment ajouter les 0 ou les 1 a gauche plutôt qu'a droite, ou bien inverser tout les nombres a la fin.

Dernière question, connaissez vous un moyen pour me permettre d'avoir un nombre entier lors de ma division euclidienne.

Merci d'avance

Cordialement

Luckytfc
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2013 à 22:44:45

Citation : Luckytfc


Je n'arrive pas a comprendre pourquoi VB me dit que nbre_decimal n'est pas assigner...



C'est du C#, string nbre_decimal = string.Empty;


Citation : Luckytfc


Dernière question, connaissez vous un moyen pour me permettre d'avoir un nombre entier lors de ma division euclidienne.


Tu peux arrondir ton nombre en utilisant, Math Floor
  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2013 à 22:48:40

Bien

nbre_decimal += "0";

Sa exige que nbre_decimal ai déja une valeur.

Quand tu créer une variable un espace mémoire est alloué et cet espace ne contient aucune valeur.

Avant de faire une opération avec un variable il faut s'assurer qu'elle soit initialisé.


Pour ton autre question, quand tu fait une division avec des entiers cela retournera forcément un entier.
  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2013 à 15:05:13

Euh... je comprends pas pourquoi tu fais une boucle de divisions pour la transition Binaire->Décimal :

private char ConvertToByteChr(string bin)
        {
            int r = 0;
            bin = Reverse(bin);

            for (int i = 0; i < bin.Length; i++)
            {
                int bit = bin[i] == '0' ? 0 : 1;
                r += (int)(bit * Math.Pow((double)2, (double)i));
            }

            return (char)r;
        }


Et pour le Décimal->Binaire, ce serait ce que tu as fait :
private string decbinstr(int chrI)
        {
            string bin = "";
            int prec = 1;
            int next = chrI;

            while (prec != 0)
            {
                prec = next;
                bin += (next % 2).ToString();
                next /= 2;
            }

            if (bin.Length < 8) return MakeLengthHeightBit(Reverse(bin));
            return Reverse(bin);
        }


PS : ces fonctions sont justes (elles donnent un entier, et une représentation binaire) mais elles viennent d'un projet donc elles ont été un peu adaptées pour lui...
  • Partager sur Facebook
  • Partager sur Twitter
"Il est impossible pour un homme d'apprendre ce qu'il croit déjà connaître"
5 janvier 2013 à 15:16:13

il est ou Chiheb2013 ? :p
  • Partager sur Facebook
  • Partager sur Twitter
5 janvier 2013 à 15:54:06

J'ai oublié de faire la demande de changement de nom vu que j'étais en Tunisie. Tu m'y fais penser, je vais la faire dans la minute qui suit. :lol:

EDIT : c'est fait !


PS : désolé pour le HS.
  • Partager sur Facebook
  • Partager sur Twitter
"Il est impossible pour un homme d'apprendre ce qu'il croit déjà connaître"
18 mars 2020 à 19:32:33

Je besoin d'un petit programme de multiplication de deux nombre binaire voici mon code mais je parviens pas à la solution exacte: Dim i, p As Integer For i = 0 To ch1.Length - 1 For p = 0 To ch2.Length - 1 Dim c As Char = ch1(ch1.Length - i - 1) Dim l As Char = ch2(ch2.Length - p - 1) If c = "1"c And l = "1"c Then TextBox6.Text = TextBox6.Text & 1 End If If c = "1"c And l = "0"c Then TextBox6.Text = TextBox6.Text & 0 End If If c = "0"c And l = "1"c Then TextBox6.Text = TextBox6.Text & 0 End If If c = "0"c And l = "0"c Then TextBox6.Text = TextBox6.Text & 0 End If Next Next
  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2020 à 8:35:22

1. Bonjour.

2. Tu déterre un sujet pour quelque chose de totalement différent.

3. Utilise les balises de code pour que ce soit un minimum lisible.

  • Partager sur Facebook
  • Partager sur Twitter

Un bon dev est un dev qui sait Googler

19 mars 2020 à 9:12:40

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)