比如说byte类型的5,在内存中是00000101,按位取反后就是11111010
当你再次输出这个数时就变成了250
按位取反就是1变0,0变1
首先你要知道现在我们用的多数都是32位机,所以整形数都是4个字节
那么再看看按位取反的结果:
00000000 00000000 00000000 00000101 这是5
00000000 00000000 00000000 00000000 这是0
11111111 11111111 11111111 11111111 这是-1
11111111 11111111 11111111 11111110 这是-2
11111111 11111111 11111111 11111101 这是-3
11111111 11111111 11111111 11111100 这是-4
11111111 11111111 11111111 11111011 这是-5
11111111 11111111 11111111 11111010 这是5取反的结果-6
运算符"!"是逻辑非运算符;"~"才是按位取反运算符。
经过"!"运算后,运算结果只有0或1;而经过"~"运算后,结果有多种,取决于操作数。
下面通过实例来介绍这个运算符的使用方法:
int a=10, b, c
b = !a // 运算后b=0,因为a不等于0(即为真),所以取非后等于0(为假)
c = ~a // 运算后c=5,因为a的二进制位1010,按位取反后变为0101(即等于5)
取反和求反,就是把原来的1变为0;把原来的0变为1;
常数是固定不变的数,或人为安排的数(如计算中用的系数)
取反有两种
按位取反:答案是10101101
逻辑取反:答案是0;即非零为1