2016-07-08 1 views
1

J'ai converti un nombre décimal en binaire en utilisant STR $() dans QBASIC. Mais j'ai besoin d'un moyen de convertir le nombre décimal en binaire sans utiliser les fonctions de chaîne. Merci.QBASIC Conversion décimal en binaire

Mon code:

CLS 
INPUT N 
WHILE N <> 0 
    E = N MOD 2 
    B$ = STR$(E) 
    N = FIX(N/2) 
    C$ = B$ + C$ 
WEND 
PRINT "Output "; C$ 
END 

Répondre

1

Cet exemple de code convertit une valeur numérique en chaîne binaire dans Basic.

PRINT "Enter value"; 
INPUT Temp# 
Out3$ = "" 
IF Temp# >= False THEN 
    Digits = False 
    DO 
     IF 2^(Digits + 1) > Temp# THEN 
      EXIT DO 
     END IF 
     Digits = Digits + 1 
    LOOP 
    FOR Power = Digits TO 0 STEP -1 
     IF Temp# - 2^Power >= False THEN 
      Temp# = Temp# - 2^Power 
      Out3$ = Out3$ + "1" 
     ELSE 
      Out3$ = Out3$ + "0" 
     END IF 
    NEXT 
END IF 
PRINT Out3$ 
END 
+0

Pour imprimer la valeur binaire, changez Out3 $ = Out3 $ + "1" pour imprimer "1"; – eoredson

1

Lorsque vous souhaitez afficher une valeur entière comme binaire, il me semble logique de le stocker dans une variable de chaîne, car il est uniquement pour l'affichage. Donc je ne suis pas vraiment sûr de ce que vous essayez de faire ici.
Peut-être que vous cherchiez LTRIM$ afin que vous obteniez des sorties comme 11010 au lieu de 1 1 0 1 0?

Vous pouvez le stocker dans une valeur entière comme dans le code ci-dessous. Mais, bien que la valeur entière ressemblera comme la variable de chaîne, il sera en fait une valeur complètement différente.

CLS 
INPUT "Type a decimal number:", N 
S$ = "" 
I = 0 
P = 1 
WHILE (N <> 0) 
    ' get right most bit and shift right 
    E = N AND 1 
    N = INT(N/2) ' bit shift right 
    ' format for dsplay 
    S$ = LTRIM$(STR$(E)) + S$ 
    I = I + (E * P) 
    P = P * 10 
WEND 
PRINT "Binary as string="; S$ 
PRINT "Binary as int="; I 
END