一、~(~1<<1)
计算过程为
1 先将1按位取反,即计算~1, 结果为除最低位为0外,其它位均为1;
2 计算左移1位,低位补0,于是结果的最低2位为0,其它为为1;
3 将2中结果按位取反,得到结果为,最低2位为1,其它为为0;
所以最终结果为3。
二、
在C语言中,负数是以补码方式存放的,计算方法为,负数绝对值对应数值的二进制值,按位取反后再加一。
当负数按位取反时,就是其补码按位取反。
比如,-10在存储为char型时,10的二进制值为0000 1010,取反后为1111 0101, 加一得到补码的二进制值为 1111 0110, 所以-10在存为char型时,补码的16进制值形式为0xF6.
当-10取反时,就是把1111 0110取反,结果为0000 1001, 结果为10进制的9。
取绝对值就没有正负了。
my ashes scattered