请问一个简单的C的有关问题

请教一个简单的C的问题
unsigned char t2=0xff;

cout<<~t2<<endl;
t2取反输出为什么是-256

------解决方案--------------------
~是按位取反,在cout下输出时把它转化为一个整数,0xff == 11111111,VC6下整数为32位,取反后变为11111111111111111111111100000000,对应的32位整数就是-256。 LZ用一下电脑上的计算器得到结果是一样的。