2008-09-02

整数の表現形式ごとの最大最小

これはWikipediaを参考にしつつ。
1の補数表現と2の補数表現が同じになってしまってあれっと思ったけど、そういえば+1されてるかどうかの違いだった… 忘れてるなあ。

// 2の補数表現での最大最小
template <typename X> struct limits_of_s2 {
static X max() { return msb<X>::value() ^ ~X(0) ; }
static X min() { return msb<X>::value(); }
};

// 1の補数表現での最大最小
template <typename X> struct limits_of_s1 {
static X max() { return msb<X>::value() ^ ~X(0) ; }
static X min() { return msb<X>::value(); }
};

// 符号ビット+絶対値表現での最大最小
template <typename X> struct limits_of_sa {
static X max() { return msb<X>::value() ^ ~X(0); }
static X min() { return ~X(0); }
};

// 符号なし整数の最大最小
template <typename X> struct limits_of_u {
static X max() { return ~X(0); }
static X min() { return X(0); }
};

0 件のコメント: