对一个陈述感到困惑

Confused with a statement

我想检查我的数组的第 4 个字节是否等于以下任何一个:0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xeA 0xeB 0xeC 0xeD 0xeE 0xeF。 我的朋友告诉我使用语句 (array[3] & 0xf0) == 0xe0。 这行得通,但我实际上不明白为什么。

请记住,按位与(&)运算,只有当操作数的两个对应位都等于1时,结果的第N位才等于1。

所以 &-ing 0xf0 到第 4 个字节的值 (array[3]) 基本上用 0 替换了该字节的最低一半,而最高的一个完好无损。

 1010  1010
 &
 1111  0000
 ====  ====
 1010  0000
 ^^^^  ^^^^ 
  ||    ||
as is  zeroed

现在剩下的就是根据 0xe0.

检查该值