basic_integer(int32_t i32)

    {

        allocate(1);

        if ( i32 & _mask )

        {

            sign = -1;

            blocks[0] = -i32;

        }

        else

        {

            if ( i32 != 0 )

                sign = +1;

            else

                sign = 0;

            blocks[0] = i32;

        }

    }


여기서,


sign 에 0이란 state 가 필요없다면 아래처럼 간단히


inline  unsigned int abs( const unsigned int value, unsigned int& sign )

{

    const   unsigned int sign_mask = (int)value >> 31;

    sign = sign_mask | 1;

    return  value ^ sign_mask - sign_mask;


안 간단하다고? 미안.