QBASIC十进制到二进制转换

时间:2016-07-08 11:40:29

标签: qbasic

我已使用QBASIC中的STR $()将十进制数转换为二进制数。但我需要一种方法将十进制数转换为二进制而不使用字符串函数。感谢。

我的代码:

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

2 个答案:

答案 0 :(得分:1)

如果要将整数值显示为二进制,我将它存储在字符串变量中似乎是合乎逻辑的,因为它仅用于显示。所以我不确定你在这里要做什么 也许您正在寻找LTRIM$,因此您会获得11010而不是1 1 0 1 0的输出?

可以将其存储在整数值中,如下面的代码所示。但是,虽然整数值看起来与字符串变量相同,但它实际上是完全不同的值。

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

答案 1 :(得分:1)

此代码示例将数值转换为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