http://www.emit.jp/prog/prog.html
のところに、4byteまとめて平均値を出す方法が
> unsigned long v0, v1, v2;
> // v0, v1 にはキャストするなり、あらかじめデータを入れておく
> v2 = (v0 & v1) + (((v0 ^ v1) & 0xfefefefe) >> 1);
のようにのっているんだけど…

どうしてこうなるの?
がんばっても理解できないので
解説してほしいのですが…