主题:急求题目
&佑慧妹妹&
[专家分:660] 发布于 2007-05-03 12:00:00
(4F8)H的二进制表示是( )
我不仅要答案,还要过程,QB最不好的就是进制转换!
回复列表 (共6个回复)
沙发
wzc1996 [专家分:1680] 发布于 2007-05-03 12:51:00
数学:
16^2(256) 16^1(16) 1
4 f=15 8
256*4+16*15+8=1272(10)
1272=10011111000(2)
板凳
wzc1996 [专家分:1680] 发布于 2007-05-03 12:53:00
QBASIC的通用转换程序:
1 CLS
DIM t AS DOUBLE
INPUT n$, s
IF s < 2 OR s <> INT(s) OR s > 16 THEN 1
DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
l = LEN(n$): DIM a(l): n$ = UCASE$(n$)
FOR i = 1 TO l
m$ = MID$(n$, i, 1)
f = 0
FOR j = 1 TO s
READ k$
IF k$ = m$ THEN f = 1: EXIT FOR
NEXT j: RESTORE
IF f = 0 THEN PRINT "ERROR": END
IF ASC(k$) > 57 THEN a(i) = ASC(k$) - 55 ELSE a(i) = VAL(k$)
NEXT i
r = 0: t = 0
FOR i = l TO 1 STEP -1
t = t + a(i) * s ^ r: r = r + 1
NEXT i
2 INPUT p
IF p < 2 OR p <> INT(p) OR p > 16 THEN 2
DO UNTIL t = 0
a$ = LTRIM$(STR$(t - INT(t / p) * p)) + a$
t = INT(t / p)
LOOP
PRINT "("; n$; ")"; s; "= ( "; a$; " )"; p
END
3 楼
Matodied [专家分:7560] 发布于 2007-05-03 14:18:00
今天上午我有急事,所以来晚了,对不起!
(4F8)H=(10011111001)2
楼上的程序不完整,这里是可以包括小数的进制转换,不过有时会出现死循环.
1 CLS
DIM t AS DOUBLE
INPUT n$, s
IF s < 2 OR s <> INT(s) OR s > 16 THEN 1
DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
d = INSTR(n$, ".")
IF d = 0 THEN l = LEN(n$): GOTO 3
DIM b(LEN(n$) - d): l = d - 1
3 DIM a(l): n$ = UCASE$(n$)
FOR i = 1 TO l
m$ = MID$(n$, i, 1)
f = 0
FOR j = 1 TO s
READ k$
IF k$ = m$ THEN f = 1: EXIT FOR
NEXT j: RESTORE
IF f = 0 THEN PRINT "ERROR": END
IF ASC(k$) > 57 THEN a(i) = ASC(k$) - 55 ELSE a(i) = VAL(k$)
NEXT i
IF d = 0 THEN 4
x = 0
FOR i = d + 1 TO LEN(n$)
x = x + 1
m$ = MID$(n$, i, 1)
f = 0: RESTORE
FOR j = 1 TO s
READ k$
IF k$ = m$ THEN f = 1: EXIT FOR
NEXT j
IF f = 0 THEN PRINT "ERROR!": END
IF ASC(k$) > 57 THEN b(x) = ASC(k$) - 55 ELSE b(x) = VAL(k$)
NEXT i
4 t = 0: r = 0
FOR i = l TO 1 STEP -1
t = t + a(i) * s ^ r: r = r + 1
NEXT i
IF d = 0 THEN 5
r = -1
FOR i = 1 TO x
t = t + b(i) * s ^ r: r = r - 1
NEXT i
5 INPUT p
IF p < 2 OR p <> INT(p) OR p > 16 THEN 5
zs = INT(t)
DO UNTIL zs = 0
a$ = LTRIM$(STR$(zs - INT(zs / p) * p)) + a$
zs = INT(zs / p)
LOOP
IF d = 0 THEN 6
xs = t - INT(t)
DO UNTIL xs = 0
b$ = b$ + LTRIM$(STR$(INT(xs * p)))
xs = xs * p
xs = xs - INT(xs)
LOOP
6 PRINT "( "; n$; " )"; s; "= ( "; a$;
IF d <> 0 THEN PRINT " . "; b$;
PRINT " )"; p
END
4 楼
Matodied [专家分:7560] 发布于 2007-05-03 16:54:00
(4F8)H
(4)H=(0100)2 (F)H=(1111)2 (8)H=(1000)2
(4F8)H=(100 1111 1000)2
5 楼
强强 [专家分:4740] 发布于 2007-05-03 23:59:00
用你输入的数整除2,把余数保存到一个字符串里,商再整除2,余数再保存,直到商为0,再把字符串里保存的余数反序输出,老帖子里都有,自己编吧
6 楼
&佑慧妹妹& [专家分:660] 发布于 2007-05-04 22:02:00
我不需要程序,我只要思路,不过还是谢谢各位,因为我自己已经琢磨出了方法,不过还是加分吧
我来回复