PRINT PRINT "<2進数の論理演算>" PRINT CALL ANDBIT("10101010","11110000",a$) CALL ORBIT ("10101010","11110000",b$) PRINT " 10101010" PRINT " 11110000 ← 下4桁をすべて0に変えるための2進数演算子" PRINT " AND) ";a$ PRINT PRINT " 10101010" PRINT " 11110000 ← 上4桁をすべて1に変えるための2進数演算子" PRINT " OR) ";b$ 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 SUB ANDBIT(x$,y$,z$) LET XX=TO10(x$) LET YY=TO10(y$) LET ZZ=bitAND(XX,YY) !2つの10進数を2進数に直してからAND論理演算してそれを10進数に変える LET z$=TO2$(ZZ) END SUB EXTERNAL SUB ORBIT(x$,y$,z$) LET XX=TO10(x$) LET YY=TO10(y$) LET ZZ=bitOR(XX,YY) LET z$=TO2$(ZZ) END SUB