回 帖 发 新 帖 刷新版面

主题:帮个忙!!!!!!!!!!!!!!!!

10进制到8进制如何做?那么10进制到16进制怎么做?8进制到16进制呢? 
[em18][em18][em18][em18][em18]

回复列表 (共6个回复)

沙发

常用的进位计数制 

1、数制的表示方法

方法一:将数用圆括号括起来,并将其数制的基数写在右下角。如(1011)2、(1AD)16、(567)10等。

方法二:在数字后加上一个英文字母表示该数的数制。如B表示二进制;O表示八进制;H表示十六进制;D表示十进制。如:1011B、1ADH、567D、72O等。

2、各种数制的特点

(1)十进制数。数码有0、1、2、3、4、5、6、7、8、9十个数字,基数为10,运算规则是“逢十进一”。

(2)八进制数。数码有0、1、2、3、4、5、6、7八个数字,基数为8,运算规则是“逢八进一”。

(3)十六进制数:数码有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个符号,运算规则是“逢十六进一”。

(4)二进制数。只有0和1两个数字,基数为2,运算规则是“逢二进一”。

        由于十进制数数码个数多,而二进制数码个数少,为了便于实现,在计算机中,使用二进制数进行数据的存储和运算。


进位计数制之间的转换


二、八、十六进制转换成十进制数。

转换方法:将二、八、十六制数按位权进行多项式展开,然后在十进制中按照“逢十进一”的运算规则进行运算。

例1-1 将(110101.11)2转换成十进制数。

(110101.11)2=1 ×(2的5次方)+1×(2的4次方)+0×2³+1×2²+0×2¹+1×2º+1×2-¹+1×2-²

              =(53.75)10

例1-2 将(123.45)8转换成十进制数。

(123.45)8= 1×8²+2×8¹+3×8º+4×8-¹+5×8-²=(83.578125)10

例1-3 将(5FC.1A)16转换成十进制数。

(5FC.1A)16=5×16²+15×16¹+12×16º+1×16-¹+10×16-²=(1532.1015625)10



十进制数转换成二、八、十六进制数

    转换方法是整数部分和小数部分分别转换。整数部分采用“求商逆取余”,小数部分采用“求积顺取整”。

例1-4 将(87.6875)10分别转换成二进制数。

整数部分转换如下:

87÷2=43 ............余1

43÷2=21 ............余1

21÷2=10.............余1

10÷2=5...............余0

5÷2=2     .............余1

2÷2=1     .............余0

1÷2=0    ..............余1

由下往上数 
结果为(87)10=(1010111)2

小数部分转换如下:

0.6875×2=1.3750.................小数点前多出一个1

0.3750×2=0.7500.................小数点前多出一个0

0.7500×2=1.5000.................小数点前多出一个1

0.5000×2=1.0000.................小数点前多出一个1

由上往下数


小数部分为: (0.6875)10=(0.1011)2,最后结果是: (87.6875)10= (1010111.1011)2





二、八进制之间的转换

(1)二进制转换为八进制:将二进制数以小数点为界,分别向左、向右每三位分为一组,不足三位时用0补足(整数在高位补0,小数在低位补0),然后将每组的三位二进制数等值转换成对应的八进制数。

例1-5 将(11101010011.1011)2转换成八进制数。

011 101 010 011.101 100

       

3     5     2     3 .   5    4 

八进制转换为二进制数:按原数位的顺序,将每位八进制数等值转换成三位二进制数。

例1-6 将(157.64)8转换成二进制数。

              1      5     7 . 6    4

            

             001 101 111.110 100        





二进制数与十六进制数之间的转换

二进制转换为十六进制数:将二进制数以小数点为界,分别向左、向右每四位分为一组,不足四位时用0补足(整数在高位补0,小数在低位补0),然后将每组的四位二进制数等值转换成对应的十六进制数。

例1-7 将(11101010011.1011101)2转换成十六进制数。

       0111 0101 0011.1011 1010

          

           7      5      3    .    B     A     

十六进制数转换为二进制数:按原数位的顺序,将每位十六制数等值转换成四位二进制数。

例1-8 将(5CE.6A)16转换成二进制数。

          5       C     E    .    6      A


        0101 1100 1110.0110 1010      

板凳

但不是很清楚

3 楼

进制转换的通用程序:
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 楼


我滴妈呀!那么长啊 ![em10]

5 楼

CLS
INPUT N$, M, N
FOR I = 1 TO LEN(N$)
A$ = MID$(N$, I, 1)
IF ASC(A$) > 64 THEN K = ASC(A$) - 55 ELSE K = VAL(A$)
X = X + K * M ^ (LEN(N$) - I)
NEXT I
DO
Y = X MOD N
X = X \ N
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = LTRIM$(STR$(Y)) + X$
LOOP WHILE X > 0
PRINT "("; N$; ")"; M; "="; "("; X$; ")"; N
END
你先输入一个数,之后输入这个数的进制,最后输入想要转换成的进制。
这三个数一齐输。

6 楼

1.十进制数转八进制数
cls
input a
dim b(100)
while a>0
i=i+1
b(i)=a mod 8
a=a\8
wend
for j=i to 1 step -1
print using"#";b(j);
next j
2.十进制数转十六进制数
cls
input a
dim b(100)
while a>0
i=i+1
b(i)=a mod 16 
a=a\16
wend
for j=i to 1 step -1
if b(j)< 10 then 
print using"#";b(i);
else
if b(j)=10 then print "A";
else
if b(j)=11 then print "B";
else
if b(j)=12 then print "C";
else
if b(j)=13 then print "D";
else
if b(j)=14 then print "E";
else
if b(j)=14 then print "F";
end if
next j
3.八进制数转十六进制数:
cls
input a
dim b(100)
c=0
while a>0
d=d+(a mod 10)*8^c
c=c+1
a=a\10
wend
while d>0
i=i+1
b(i)=d mod 16 
d=d\16
wend
for j=i to 1 step -1
if b(j)< 10 then 
print using"#";b(i);
else
if b(j)=10 then print "A";
else
if b(j)=11 then print "B";
else
if b(j)=12 then print "C";
else
if b(j)=13 then print "D";
else
if b(j)=14 then print "E";
else
if b(j)=14 then print "F";
end if
next j

我来回复

您尚未登录,请登录后再回复。点此登录或注册