为什么位与0xff后能去掉前面的0
0xff 二进制为 0000 0000 0000 0000 0000 0000 1111 1111
假如有一个数二进制是0000 0000 0100 0100 0000 1010 1110 1011
这个数&上0xff为
0000 0000 0000 0000 0000 0000 1111 1111
& 0000 0000 0100 0100 0000 1010 1110 1011
--------------------------------------------------------------
0000 0000 0000 0000 0000 0000 1110 1011
首先,0xff是一个十六进制的数,转换为二进制就是1111 1111
这个数在8bit也就是在byte中直接就是1111 1111(前面就不存在0,因为它只有8bit)
在32bit也就是在int中就是00000000 00000000 00000000 11111111(0可以省略,但实际是存在的)
他前面的0是根据最终是在什么类型下决定的。
某个数和0xff进行&运算,根据&运算的特点只有和1&运算才为1.和0&运算都是0.所以和0xff进行&运算之后,它如果最终是byte类的话,因为只有8bit所以只剩下了1111 1111.假如最终类型是Int类型他其实是00000000 00000000 00000000 11111111
0xff 一个f是1111 两个就是一个字节八位11111111
然后与int类型32位与 ,只剩下低8位,高24位为0