マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心〜中級者の方からよく質問される「浮動小数点数を固定小数点数に変換するには?」についてです。
素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。
今回は、初心〜中級者から多く寄せられる質問です。
浮動小数点数を固定小数点数に変換するソフトウェア処理を実装するにはどうすればよいですか? FPU(浮動小数点ユニット)ハードウェアが使える場合/使えない場合のどちらでも実装可能ですか?
FPUを内蔵したArm Cortex-Mコアマイコンの場合、VCVT命令で浮動小数点数から固定小数点数へ変換できます。FPUハードウェアが使えない場合は、VCVT命令を使わずにソフトウェア処理のみで変換することも可能です。
FPUを内蔵したArm Cortex-Mコアマイコンの場合、VCVT命令で浮動小数点数から固定小数点数へ変換できます。
下記に浮動小数点数から固定小数点数に変換するVCVT命令を解説します。
VCVT.Td.F32 Sd, Sd, #fbits
FPUレジスタS0経由で、float型の浮動小数点数を符号有り16ビット長(小数部2ビット)の固定小数点数に変換するVCVT命令は下記の通りです。
VCVT.S16.F32 S0, S0, #2
また、下記のように、TdとF32を入れ替えると固定小数点数から浮動小数点数への変換命令になります。
VCVT.F32.Td Sd, Sd, #fbits
Copyright © ITmedia, Inc. All Rights Reserved.