Month: 2021年7月
1.9 整数除算で端数切り上げ.(商+剰余)
- 更新日:
- 公開日:
前回は商のみを求めましたが、今回は余りも求めることにします。 商と余りなので、標準ライブラリのdiv_t等の型を使いたいところですが、テンプレート化しにくいですし、符合無し整数型も扱えませんので、独自にクラステンプレート […]
1.8 整数除算で端数切り上げ.(商のみ)
- 更新日:
- 公開日:
今回は整数除算の商の端数を切り上げます。+∞方向に丸めるといってもよいでしょう。 元ネタでは負の数は対象にしていませんでしたが、せっかく実装し直すのでこちらでは負の数も対象にしました。 [crayon-678b3984f […]
1.7 整数演算で端数四捨五入
今回はごく普通の四捨五入です。ただし、整数除算の商を四捨五入して整数にします。 四捨五入の求め方については、JIS Z 8401:2019の規則Bがそれに該当します。せっかくですので該当部分を引用してみます。 元ネタでは […]
1.6 整数演算で端数を偶数丸め (最近接偶数への丸め,JIS丸め,ISO丸め)
今回扱うのは整数除算の結果を最近接遇数丸めする方法についてです。 最近接遇数丸めというのは四捨五入に近いのですが、端数が0.5だったときに偶数方向に丸めるというものです。たとえば、1.5でも2.5でも2になりますし、3. […]
1.5 指定された整数型が表現可能な最小値および最大値を返す。
整数型の表現範囲は<climits>で定義されるINT_MAXやINT_MINのようなマクロを使えば取得することができます。ところがこの方法では、型ごとに異なるマクロを使わないといけません。そのため、テンプレ […]
1.4 指定された整数型が「符号ビット+絶対値」か否かを判定する。
前回、前々回に引き続き、今回は負の整数値の内部表現が符号ビットと絶対値かどうかを判定します。 これも 2 の補数表現のときと理屈は同じです。-1 の下位 2 ビットが 01 (= 1)であれば「符号ビット+絶対値」です。 […]
1.3 指定された整数型が1の補数表現か否かを判定する。
前回に引き続き、今度は1の補数表現かどうかを判定するメタ関数を作っています。 2の補数表現のときと理屈は同じです。-1の下位2ビットが10 (= 2)であれば1の補数表現です。 [crayon-678b3984f1d57 […]
1.2 指定された整数型が2の補数表現か否かを判定する。
負の整数値の内部表現が2の補数かどうかを調べるメタ関数を作ってみましょう。これは実はそんなに難しくありません。 [crayon-678b3984f1e65305936215/] -1の下位2ビットを調べてやればすぐに分か […]
1.1 指定された整数型が符号付きか否かを判定する。
- 更新日:
- 公開日:
これは簡単です。標準C++ライブラリには、numeric_limitsというクラステンプレートがありますので、その静的データメンバis_signedを参照すればよいだけです。numeric_limitsクラステンプレート […]