新しく発言する  EXIT  インデックスへ

16進法


  16進法 マメ 2008/03/27 23:16:08 
  !10進レジスター:16進レジスターのよう... SECOND 2008/03/28 01:51:15 
  │└!エピソード SECOND 2008/03/28 18:04:07 
  │ └エピソード2 SECOND 2008/03/28 19:17:59 
  │  └!2進化10進数(BCD、Binary-codeddecimal)... 山中和義 2008/03/30 12:52:58 
Re: エピソード2  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/03/30 12:52:58
!2進化10進数(BCD、Binary-coded decimal)の変換

FUNCTION BCDtoBIN(a) !非負の数aをBCD表記して、2進法とみなした値
LET BCDtoBIN=BVAL(STR$(a),16)
END FUNCTION
FUNCTION BINtoBCD(a) !非負の数aの2進法を、BCD表記の数とみなした値
LET t$=BSTR$(a,2)
LET L=LEN(t$) !桁を得る
LET m=MOD(L,4) !4桁ごとに区切る
IF m>0 THEN !先頭部分
LET s=BVAL(t$(1:m),2)
LET t$(1:m)="" !eat it
ELSE
LET s=0
END IF
FOR i=1 TO INT(L/4) !残り
LET s=s*10+BVAL(t$(1:4),2) !左シフト
LET t$(1:4)="" !eat it
NEXT i
LET BINtoBCD=s
END FUNCTION


LET a=49
PRINT BCDtoBIN(a)
LET a=97
PRINT BCDtoBIN(a)
LET a=1987
PRINT BCDtoBIN(a),BVAL("0001100110000111",2)


LET a=73
PRINT BINtoBCD(a)
LET a=151
PRINT BINtoBCD(a)
LET a=6535
PRINT BINtoBCD(a), BINtoBCD(BVAL("0001100110000111",2))

END
  簡単なのは組込み関数のBSTR$を使うことです... 荒田浩二 2008/03/28 11:39:51  (修正1回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。