PRINT PRINT "16進数 → 2進数 → 10進数 → 2進数 → 16進数" PRINT INPUT PROMPT "2桁の16進数を入力 → ":A$ PRINT PRINT " ";A$ PRINT " ↓" LET B$=TO162$(A$) PRINT " ";B$ PRINT " ↓" LET C=TO10(B$) PRINT C PRINT " ↓" LET D$=TO2$(C) PRINT " ";D$ PRINT " ↓" LET E$=TO216$(D$) PRINT " ";E$ PRINT END EXTERNAL FUNCTION TO10(S$) !2進数→10進数 DIM MJ$(20) DIM SU(20) LET L=LEN(S$) FOR N=1 TO L LET MJ$(N)=S$(N:N) !一文字ずつ取り出す NEXT N FOR N=1 TO L LET SU(N)=VAL(MJ$(N)) !文字列を数値に変換する NEXT N LET K=0 FOR N=1 TO L LET k=k+SU(N)*2^(L-N) NEXT N LET TO10=k END FUNCTION EXTERNAL FUNCTION TO2$(d) !10進数→2進数 DIM bin(20) LET p=1 DO WHILE 2<=d LET bin(p) = MOD(d,2) LET d = INT(d/2) LET p=p+1 LOOP LET bin(p) = d LET Q$="" FOR i=p TO 1 STEP -1 LET y=bin(i) LET Q$=Q$&mid$("01",y+1,1) NEXT i LET TO2$=Q$ END FUNCTION EXTERNAL FUNCTION TO216$(S$) !2進数→16進数 DIM MJ$(20) DIM SU(20) DIM bin(20) LET L=LEN(S$) FOR N=1 TO L LET MJ$(N)=S$(N:N) !一文字ずつ取り出す NEXT N FOR N=1 TO L LET SU(N)=VAL(MJ$(N)) !文字列を数値に変換する NEXT N LET d=0 FOR N=1 TO L LET d=d+SU(N)*2^(L-N) NEXT N LET p=1 DO WHILE 16<=d LET bin(p) = MOD(d,16) LET d = INT(d/16) LET p=p+1 LOOP LET bin(p) = d LET Q$="" FOR i=p TO 1 STEP -1 LET y=bin(i) LET Q$=Q$&mid$("0123456789ABCDEF",y+1,1) NEXT i LET TO216$=Q$ END FUNCTION EXTERNAL FUNCTION TO162$(S$) !16進数→2進数 DIM MJ$(20) DIM SU(20) DIM bin(20) LET L=LEN(S$) FOR N=1 TO L LET MJ$(N)=S$(N:N) !一文字ずつ取り出す IF MJ$(N)="A" THEN LET MJ$(N)="10" ELSEIF MJ$(N)="B" THEN LET MJ$(N)="11" ELSEIF MJ$(N)="C" THEN LET MJ$(N)="12" ELSEIF MJ$(N)="D" THEN LET MJ$(N)="13" ELSEIF MJ$(N)="E" THEN LET MJ$(N)="14" ELSEIF MJ$(N)="F" THEN LET MJ$(N)="15" END IF NEXT N FOR N=1 TO L LET SU(N)=VAL(MJ$(N)) !文字列を数値に変換する NEXT N LET d=0 FOR N=1 TO L LET d=d+SU(N)*16^(L-N) NEXT N LET p=1 DO WHILE 2<=d LET bin(p) = MOD(d,2) LET d = INT(d/2) LET p=p+1 LOOP LET bin(p) = d LET Q$="" FOR i=p TO 1 STEP -1 LET y=bin(i) LET Q$=Q$&mid$("01",y+1,1) NEXT i LET TO162$=Q$ END FUNCTION