1.10 整数除算で端数切り下げ.(商+剰余,関数) 更新日:2021年7月26日 公開日:2021年7月25日 C++関数・テンプレート集プログラミング技術情報 前回は商の端数を切り上げましたので、今回は切り捨てることにします。 前回定義したxdiv_t構造体テンプレートを今回も使いますので再掲載しておきます。 [crayon-676f13ac454ed833807281/] 例 […] 続きを読む
1.9 整数除算で端数切り上げ.(商+剰余) 更新日:2021年7月25日 公開日:2021年7月22日 C++関数・テンプレート集プログラミング技術情報 前回は商のみを求めましたが、今回は余りも求めることにします。 商と余りなので、標準ライブラリのdiv_t等の型を使いたいところですが、テンプレート化しにくいですし、符合無し整数型も扱えませんので、独自にクラステンプレート […] 続きを読む
1.8 整数除算で端数切り上げ.(商のみ) 更新日:2021年7月22日 公開日:2021年7月21日 C++関数・テンプレート集プログラミング技術情報 今回は整数除算の商の端数を切り上げます。+∞方向に丸めるといってもよいでしょう。 元ネタでは負の数は対象にしていませんでしたが、せっかく実装し直すのでこちらでは負の数も対象にしました。 [crayon-676f13ac4 […] 続きを読む
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. […] 続きを読む
1.5 指定された整数型が表現可能な最小値および最大値を返す。 公開日:2021年7月18日 C++関数・テンプレート集プログラミング技術情報 整数型の表現範囲は<climits>で定義されるINT_MAXやINT_MINのようなマクロを使えば取得することができます。ところがこの方法では、型ごとに異なるマクロを使わないといけません。そのため、テンプレ […] 続きを読む
1.4 指定された整数型が「符号ビット+絶対値」か否かを判定する。 公開日:2021年7月17日 C++関数・テンプレート集プログラミング技術情報 前回、前々回に引き続き、今回は負の整数値の内部表現が符号ビットと絶対値かどうかを判定します。 これも 2 の補数表現のときと理屈は同じです。-1 の下位 2 ビットが 01 (= 1)であれば「符号ビット+絶対値」です。 […] 続きを読む
1.3 指定された整数型が1の補数表現か否かを判定する。 公開日:2021年7月16日 C++関数・テンプレート集プログラミング技術情報 前回に引き続き、今度は1の補数表現かどうかを判定するメタ関数を作っています。 2の補数表現のときと理屈は同じです。-1の下位2ビットが10 (= 2)であれば1の補数表現です。 [crayon-676f13ac45e09 […] 続きを読む
1.2 指定された整数型が2の補数表現か否かを判定する。 公開日:2021年7月16日 C++関数・テンプレート集プログラミング技術情報 負の整数値の内部表現が2の補数かどうかを調べるメタ関数を作ってみましょう。これは実はそんなに難しくありません。 [crayon-676f13ac45f3d211515310/] -1の下位2ビットを調べてやればすぐに分か […] 続きを読む
1.1 指定された整数型が符号付きか否かを判定する。 更新日:2021年7月15日 公開日:2021年7月14日 C++関数・テンプレート集プログラミング技術情報 これは簡単です。標準C++ライブラリには、numeric_limitsというクラステンプレートがありますので、その静的データメンバis_signedを参照すればよいだけです。numeric_limitsクラステンプレート […] 続きを読む