// get the n'th bit of a number // the bit number starts from 0 #define BIT_N(number, bit_num) (((number)>>(bit_num))&0x1) #define OVERFLOW(A,B,S) ((A)&(B)&(~(C))|(~(A))&(~(B))&(C)) //#define INT_OVERFLOW(a,b,s) OVERFLOW(a>>31,b>>31,c>>31) int main() { char a = -4; char b = -125; char s = a + b; int bp = sizeof(a)*8-1; // number of the last bit int overflow = OVERFLOW(BIT_N(a,bp), BIT_N(b,bp), BIT_N(s,bp)); printf("for numbers a:%d and b:%d the sum is %d and overflow:%d\n", a, b, s, overflow); } ~ ~ ~