メディア

浮動小数点数を固定小数点数に変換するには?Q&Aで学ぶマイコン講座(98)(1/2 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心〜中級者の方からよく質問される「浮動小数点数を固定小数点数に変換するには?」についてです。

» 2025年01月09日 10時00分 公開

 素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。

 今回は、初心〜中級者から多く寄せられる質問です。

 浮動小数点数を固定小数点数に変換するソフトウェア処理を実装するにはどうすればよいですか? FPU(浮動小数点ユニット)ハードウェアが使える場合/使えない場合のどちらでも実装可能ですか?

 FPUを内蔵したArm Cortex-Mコアマイコンの場合、VCVT命令で浮動小数点数から固定小数点数へ変換できます。FPUハードウェアが使えない場合は、VCVT命令を使わずにソフトウェア処理のみで変換することも可能です。


 FPUを内蔵したArm Cortex-Mコアマイコンの場合、VCVT命令で浮動小数点数から固定小数点数へ変換できます。

 下記に浮動小数点数から固定小数点数に変換するVCVT命令を解説します。

VCVT.Td.F32 Sd, Sd, #fbits
  • Td:変換後の固定小数点数データのフォーマットを指定
    下記4つから選べます
    S16:符号有り16ビット値
    U16:符号無し16ビット値
    S32:符号有り32ビット値
    U32:符号無し32ビット値
  • Sd:変換時にFPUへの入力元およびFPUからの出力先として使うFPUレジスタ
  • #fbits:固定小数点数の小数部分(fraction bit)に用いるビット数

 FPUレジスタS0経由で、float型の浮動小数点数を符号有り16ビット長(小数部2ビット)の固定小数点数に変換するVCVT命令は下記の通りです。

VCVT.S16.F32 S0, S0, #2

 また、下記のように、TdとF32を入れ替えると固定小数点数から浮動小数点数への変換命令になります。

VCVT.F32.Td Sd, Sd, #fbits
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.