一次求反运算符是一元运算符,它的作用仅是对运算数的位“翻转”。将运算数的每个是1的位翻转为0,而将每个是0的位翻转为1。下面是真值表:
b1
~b1
0
1
1
0
-------------
如果不知道运算中数值的准确位大小,那么一次求反运算符非常有用,使用它可让程序不会依赖于整数数据类型的特定大小。例如,要将类型为int的w1的最低位设为0,可将一个所有位都是1,但最右边的位是0的int值与w1进行与运算。
w1 &= 0xFFFFFFFE; 用 w1 &= ~1; 替换,那么在任何机器上w1都会同正确的值进行与运算。
这是因为这条语句会对1求反,然后在左侧加入足够的1,以满足int的大小要求(在32位机器上,会在左侧的31个位上加1)。
想了解其他位运算符,请参阅
苹果开发者Mike的
Objective-C位运算符一览表