0x80化成二进制是 10000000 ,最高位为1,后面是0
char占一个字节,也就是说也有8位长度
与运算的规则是,必须 1 & 1结果才为1,其他的都为0
因为0x80 后7位是0,所以无论这个s[i]是什么字符,与运算之后,后7位肯定是0,然后我们看首位,也就是说,如果s[i]最高位为1的话,那么与运算之后,结果才为1,我们做个比方
00101110
& 10000000
-----------
00000000
如果
10011100
&
10000000
------------
10000000
那么你看,最终结果只有两种,要么为0,要么为 0x80