Convertisseur decimal - binaire (algorithme de convertion détaillé) avec choix du format de mot en sortie

Soyez le premier à donner votre avis sur cette source.

Vue 28 638 fois - Téléchargée 906 fois

Description

Il s'agit d'un convertisseur Decimal/Binaire qui utilise le principe de la division par 2 (Voir Image), l'utilisateur choisit le format du mot en sortie

Source / Exemple :


'**************************************************************
'*                 Convertion Decimal/Binaire                 
'*                                                            
'*   Elements utilisés:                                       
'*   - 2 TextBox : txtNbBits, txtEntree                       
'*   - 3 GroupeBox : gpeBits, gpeDecimal, gpeResultat         
'*   - 1 Label : lblResultat                                  
'*   - 1 Button : btnConvertir                                
'*                                                            
'**************************************************************

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

    Private Sub btnConvertir_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles btnConvertir.Click

        'Déclaration des variables
        Dim NbDecimal As Single
        Dim SolDivision As Single
        Dim SolModulo As Integer
        Dim i As Integer
        Dim Parite As Integer
        Dim NbDivisions As Integer
        Dim NbBits As Integer

        'Efface un eventuel résultat déjà présent sur lblResultat
        lblResultat.Text = ""

        If Not IsNumeric(txtEntree.Text) Or txtEntree.Text = "" Then
            'Afficher un message d'erreur si la donnée n'est pas de 
            'type numérique ou si txtEntree est vide
            MsgBox("Veuillez entrer un chiffre entier", _
            MsgBoxStyle.Exclamation)
        Else
            'Convertion de txtEntree.text en une variable de type Integer
            NbDecimal = CType(txtEntree.Text, Integer)
        End If

        If Not IsNumeric(txtNbBits.Text) Or txtNbBits.Text = "" Then
            'Afficher un message d'erreur si la donnée n'est pas de 
            'type numérique ou si txtnbBits est vide
            MsgBox("Veuillez entrer un chiffre entier", _
            MsgBoxStyle.Exclamation)
        Else
            'Convertion de txtNbBits.text en une variable de type Integer
            NbBits = CType(txtNbBits.Text, Integer)
        End If

        'Determination du nombre de divisions à effectuer
        NbDivisions = NbBits - 1

        For i = NbDivisions To 0 Step -1
            'Division classique par 2
            SolDivision = NbDecimal / 2
            'Division Modulo (Resultat entier arrondit par defaut)
            SolModulo = NbDecimal \ 2
            'Reaffectation de la variable NbDecimal
            NbDecimal = SolModulo

            'Test si SolDivision = SolModulo (Concrétement si le resultat 
            'SolDivision est entier),donc affecte la valeur "0" si le reste de 
            'la division est nul ou affecte "1" dans le cas contraire, avant 
            'le résultat précédent.
            If SolDivision = SolModulo Then
                lblResultat.Text = 0 & lblResultat.Text
            Else
                lblResultat.Text = 1 & lblResultat.Text
            End If
        Next

    End Sub

End Class

Conclusion :


Note:
Pour le fonctionnement allez voir la capture d'écran.

Mise à jour:
13/04/03
-Amélioration des commentaires
-Definition de l'ordre de tabulation

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
53
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2008

desolé j'ignore la ligne
---------------
return (conv)
---------------
dans la fin du fonction ToBinary. deso deso desolé
Messages postés
53
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2008

Il y a qq poit il faut les respecter:
1- Il faut suivie les principe de programmation en Gene logiciel (L'independence de l'interface et le noyeau fonctionnel), alors tu peut ecrire un simple fonction de conversion avec des parametres de type ( integer, single, double,byte...etc) [tu peut redifiner la fonction] ensuite tu faire appele a cette fonction. chaqu'un l'utilise selon ses besoin et elle reste compatible avec toutes les objets de l'interface (TextBox, ou listes ou simple variable)
et le code sera
---------------------------------------------------------
public fonction ToBinary(byval nbr as Integer)as String
dim conv as string=""
Do
conv=(nbr Mod 2) & conv
nbr=nbr \ 2
Loop While nbr>0
end function
-------------------------------------------------------------
puis faire les teste si toute est correcte Alors
--------------------------------------------------------------
lblResultat.Text = ToBinary(Ctype(txtEntree.Text,Integer))
--------------------------------------------------------------

2- Il faut savoire que la boucle "DO....LOOP" est plus plus rapide que la boucle "FOR.....NEXT", pour ça essayer toujour d'éviter la boucle "FOR" on la traduit en boucle "DO WHILE"

Mais il reste toujour une bonne essaye. Continue

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.