如题所述
是按二进制的位取反,即二进制各位是1的变为0,是0的变为1。
例如,整数型的数据,大多数C编译系统中都是规定用16位二进制表示。所以如果写
~12345
就应该如下计算:
整数12345的二进制形式是0011000000111001,
故~12345的二进制形式是1100111111000110,等于十进制数53190。
补充一点:
我这里说“等于十进制数53190”,是假设这个数据是“无符号整数”即unsigned int型的。
假如不是“无符号”的而是“有符号”的int型,那么十进制数53190就已经溢出了。按照有符号数的“补码表示规则”,二进制的1100111111000110将被看作负数,即十进制的-12346。
这已经牵涉到另一个问题了。
总之,
对unsigned int型:~12345等于53190;
对于int型:~12345等于-12346。
例如,整数型的数据,大多数C编译系统中都是规定用16位二进制表示。所以如果写
~12345
就应该如下计算:
整数12345的二进制形式是0011000000111001,
故~12345的二进制形式是1100111111000110,等于十进制数53190。
补充一点:
我这里说“等于十进制数53190”,是假设这个数据是“无符号整数”即unsigned int型的。
假如不是“无符号”的而是“有符号”的int型,那么十进制数53190就已经溢出了。按照有符号数的“补码表示规则”,二进制的1100111111000110将被看作负数,即十进制的-12346。
这已经牵涉到另一个问题了。
总之,
对unsigned int型:~12345等于53190;
对于int型:~12345等于-12346。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-09-06
前置运算符,对后续的对象按位取反。
第2个回答 2011-09-05
取反,就是相反的意思本回答被提问者采纳
第3个回答 2011-09-06
按位取反,如~1011为
0100
0100
第4个回答 2020-01-13