char 与unsinged char 取反不一样,困扰了我一下下。
以下:
unsigned char i=0x80;
char j=0x80;
~i: 0xffffff7f int
~j 0x0000007f int
解释的网址如下:
说是char在取反之前存入32位寄存器,得按最高位补齐,因为0x80的最高位为1所以补齐后变为0xffffff80,然后取反就变成了0x0000007f.
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29110326&id=4602670