#include <iostream>

using namespace std;


#define  bit_not( v, r, x, y ) ( v >= x ? v += y : r += x )


char neg( char a )

{

    unsigned char v = (unsigned char)a;

    char r = 1;

    bit_not( v, r, 0x80, 0x80 );

    bit_not( v, r, 0x40, 0xC0 );

    bit_not( v, r, 0x20, 0xE0 );

    bit_not( v, r, 0x10, 0xF0 );

    bit_not( v, r, 0x08, 0xF8 );

    bit_not( v, r, 0x04, 0xFC );

    bit_not( v, r, 0x02, 0xFE );

    bit_not( v, r, 0x01, 0xFF );


    return  r;

}


int main()

{

    cout << (int)neg( 5 ) << endl;

    return 0;

}


문제가 시궁창. 귀찮아서 char 로 한다. 32개는 사양함.


어차피 -a == ~a + 1 인걸.