if((n&(-2147483648))==(-2147483648))
这里涉及到运算符优先级问题,与或非的等级都比较低,运算时最好打括号
补码问题
负数的补码是整数的补码取反加1,例如char是1到255,一共八位二进制数,整数的最高位是0,从右往左依次是0到7位,
255的7位是0,0到6位都是1
正数相当于从0 000 0001到0 111 1111
0的补码是 0 000 0000
负数的补码是 1 111 1111 到1 000 0000
负数比整数多一个,是-256,他的补码是1 000 0000,它么有对应的正数,所以无法取反加1,并且如果倒推过去减一取反的话还是他自己。
2019.9.29
最新推荐文章于 2019-12-05 21:03:19 发布