1.14 2の冪乗か否かを判定する。 公開日:2021年7月30日 C++関数・テンプレート集プログラミング技術情報 今回は、与えられた値が2の累乗(べき乗)かどうかを判定する処理を作ってみます。 まずは整数定数式に対して静的に判定を行うためのメタ関数を定義してみましょう。 [crayon-67882a9ccf4c4437001959/ […] 続きを読む
1.13 無符号整数の最下位の ‘1’ のビットだけを抽出する。 公開日:2021年7月28日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、1が立っている最も下位のビットだけを残し、他のビットを0にします。 [crayon-67882a9ccf7f1034167673/] 上のメタ関数では静的な処理しか行えませんので、通常の関数テンプレートに […] 続きを読む
1.12 最大公約数を求める。 公開日:2021年7月27日 C++関数・テンプレート集プログラミング技術情報 2整数の最大公約数を求めます。以下の条件を満たせば、必ずしも整数型でなくてもかまいません。 代入可能である <演算子が使用可能 %演算子が使用可能 [crayon-67882a9ccf8fb182381141/] […] 続きを読む
1.11 整数除算 (商+剰余,C標準ライブラリ関数 div() のテンプレート版) 公開日:2021年7月26日 C++関数・テンプレート集プログラミング技術情報 同じような内容が続きますが、今回はC言語の標準ライブラリにあるdiv関数をテンプレート化したものです。 C++ではdiv関数が引数の型によって多重定義されています。しかし、返却値の型はC言語と同じで、div_t、ldiv […] 続きを読む
1.10 整数除算で端数切り下げ.(商+剰余,関数) 更新日:2021年7月26日 公開日:2021年7月25日 C++関数・テンプレート集プログラミング技術情報 前回は商の端数を切り上げましたので、今回は切り捨てることにします。 前回定義したxdiv_t構造体テンプレートを今回も使いますので再掲載しておきます。 [crayon-67882a9ccfab8952894905/] 例 […] 続きを読む
点字のデバッグ 公開日:2021年7月24日 プログラミング技術情報 今回は点字のデバッグについての話題です。PCで点字の出力を行うには点字ディスプレイというデバイスを使いますが、実機がないとどんな表示になるのか皆目わからないというのは困りものです。かといって、画面上に点字のパターンを描画 […] 続きを読む
1.9 整数除算で端数切り上げ.(商+剰余) 更新日:2021年7月25日 公開日:2021年7月22日 C++関数・テンプレート集プログラミング技術情報 前回は商のみを求めましたが、今回は余りも求めることにします。 商と余りなので、標準ライブラリのdiv_t等の型を使いたいところですが、テンプレート化しにくいですし、符合無し整数型も扱えませんので、独自にクラステンプレート […] 続きを読む
1.8 整数除算で端数切り上げ.(商のみ) 更新日:2021年7月22日 公開日:2021年7月21日 C++関数・テンプレート集プログラミング技術情報 今回は整数除算の商の端数を切り上げます。+∞方向に丸めるといってもよいでしょう。 元ネタでは負の数は対象にしていませんでしたが、せっかく実装し直すのでこちらでは負の数も対象にしました。 [crayon-67882a9cc […] 続きを読む
1.7 整数演算で端数四捨五入 公開日:2021年7月19日 C++関数・テンプレート集プログラミング技術情報 今回はごく普通の四捨五入です。ただし、整数除算の商を四捨五入して整数にします。 四捨五入の求め方については、JIS Z 8401:2019の規則Bがそれに該当します。せっかくですので該当部分を引用してみます。 元ネタでは […] 続きを読む
1.6 整数演算で端数を偶数丸め (最近接偶数への丸め,JIS丸め,ISO丸め) 公開日:2021年7月19日 C++関数・テンプレート集プログラミング技術情報 今回扱うのは整数除算の結果を最近接遇数丸めする方法についてです。 最近接遇数丸めというのは四捨五入に近いのですが、端数が0.5だったときに偶数方向に丸めるというものです。たとえば、1.5でも2.5でも2になりますし、3. […] 続きを読む