跳转至

做实验时候qwn对lab1的提示

1 bitXor(x,y)
只用取反~和按位与&实现按位异或(某位相同则为0,不同则为1)
x^y=(~x|~y)&(x|y)=~(x&y) & ~(~x& ~y)
德摩根律
a ^ b = (~a | ~b) & (a | b) 这个公式很重要
(~a | ~b) = ~(a & b)

2 tmin
求补码的最小值
int类型补码的最小值是1<<31

3 isTmax(x)
如果x是Tmax,就返回1
我们知道Tmax是0x7fffffff,但是不能用==怎样来比较呢?
用那个性质,异或性质 就是a^a=0一定存在

4 allOddBits(x)
如果所有的奇数位都被置为了1,就返回1 否则返回0
0xFFFFFFFD 11111111....1101 这个返回的就是0
这里的奇数位是从高位到低位来看的,就是从左而右,而不是从右向左
如果调试系统有限制,不让搞0xAAAAAAAA这么大的数字
可以这样int m=0xAA;
m=(m << 8) | m;
m=(m << 8) | m;
m=(m << 8) | m;
这样就出来了0xAAAAAAAA 
为什么搞0xAAAAAAAA ?二进制是1010.....

5 negate(x)
返回-x
这个利用那个性质-x=~x+1


qwn推荐了本书 hacker's delight