Can somebody explain me why this:

-------------------------------------
#include <iostream.h>

int main(void)
{
int a, b;

a = 100;
b = ~a;

cout << a << endl;
cout << b << endl;
}
-------------------------------------

comes out as:
100
-101

shouldn't it be 100 and 27?