! 这个是逻辑反,凡是a的值不为0的,!a 就等于0; 如果a的值为0,则 !a 的值为1
而~这个是 按位取反
比如 int a=2 ; 用二进制表示为00 00 00 10;
则 !a = 0
而 ~a = 11 11 11 01
但是应但注意的是,按位取反后的二进制结果为补码形式,求其源码为 : 10 00 00 11 即为 -3,所以 ~a 的结果为 -3。
! 这个是逻辑反,凡是a的值不为0的,!a 就等于0; 如果a的值为0,则 !a 的值为1
而~这个是 按位取反
比如 int a=2 ; 用二进制表示为00 00 00 10;
则 !a = 0
而 ~a = 11 11 11 01
但是应但注意的是,按位取反后的二进制结果为补码形式,求其源码为 : 10 00 00 11 即为 -3,所以 ~a 的结果为 -3。