>>319を勝手に補足。

>>2番目と3番目はkey = 512 + 256のときとかに違いが出る。
ここで512と256が2の倍数だというところがミソ。
512 = 0b1000000000
256 = 0b0100000000
ここで0b〜は2進数表記という意味。

(512+256)&256は256だけど、(11+1)&1は1じゃないので注意。