掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
2桁未満の数字の1桁目の数字だけを返す関数 (ID:12450)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
十進の8桁までの整数のバイナリー表現を4ビットごとの十進数(BCD)表現に 変換する関数を見つけました。 ここの Tips21 です。 http://www.xploiter.com/programming/delphi/tips3.shtml これを使うと一回の変換で、各桁の10進数が求められます。 function Base10(Base2:Integer) : Integer; assembler; asm cmp eax,100000000 // check upper limit jb @1 // ok mov eax,-1 // error flag jmp @exit // exit with -1 @1: push ebx // save registers push esi xor esi,esi // result = 0 mov ebx,10 // diveder base 10 mov ecx,8 // 8 nibbles (10^8-1) @2: mov edx,0 // clear remainder div ebx // eax DIV 10, edx mod 10 add esi,edx // result = result + remainder[I] ror esi,4 // shift nibble loop @2 // loop for all 8 nibbles mov eax,esi // function result pop esi // restore registers pop ebx @exit: end; procedure TForm1.Button1Click(Sender: TObject); var value,i:integer; begin value := 12345678; value := Base10(value); for i := 1 to 8 do Memo1.Lines.Add(IntToStr(value shr ((i-1)*4) and $F)); end; Memo1 の結果 8 7 6 5 4 3 2 1
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.