按位运算,0&1=0,0&0=0,1&1=1,1&0=0;
a=0xab,用二进制表示是10101011,
b=20,用二进制表示是 00010100,
a&=b,就是,a= a&b, a=00000000=0;
a^=a,就是,a= a^a,a=0;,
b,不变。
x>>y,就是x*(2^y),x<<=y就是x=x/(2^y);
a=0xab,用二进制表示是10101011,
b=20,用二进制表示是 00010100,
a&=b,就是,a= a&b, a=00000000=0;
a^=a,就是,a= a^a,a=0;,
b,不变。
x>>y,就是x*(2^y),x<<=y就是x=x/(2^y);
b=00010100(bin)
所以 a&b=00000000
这只是一个逻辑"与"的问题
& | 0 | 1 |
---+---+---+
0 | 0 | 0 |
---+---+---+
1 | 0 | 1 |
---+---+---+后面的就容易了
b(20) 的二进制为00010100a与b 的各位相比,没有1,所以a&=b 的结果为0
00110101
& 01010101
= 00010101
而
00110101
| 01010101
= 01110101
x>>y,就是x*(2^y),x<<=y就是x=x/(2^y);
x<<=y就是x=x/(2^y);
这个是怎么来得?>>和<<只是移位操作符,怎么变成了x*(2^y)和x=x/(2^y);
2^y的意思是2的y次幂,不是2与y相按位异或运算。