#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 인걸.
댓글 0