>>16
サイトで解説されてる・・・と思ったけど確かに分かりにくい。

おそらく、atanに与える x/y の値は小数点以下も扱わないといけないんだけど
配列(テーブル)で値を参照するためには、添え字として正の整数を与えないといけないから
どうにかしてこの x/y を整数で表さないといけない。

そこで、整数をビットシフトさせて、仮想的に下位bit(ここでは8bit)を小数点以下として扱うことで
この問題を解決している。

それが (x<<8) / y の部分。
xとyは整数であり、結果も整数になる。

つまり、(x<<8)/yの結果は、小数点以下を表しつつ、配列の添え字として扱えるということ。
もちろん添え字は正でなければならないので、結果が負になる場合は別途処理が必要。

また更に、小数点以下の精度は 1/2^8であり、xの最大値も8bit分減るので
そのへん注意する必要がある。

たぶんこんな感じ。

ちなみにatanを何に使うかは分からないけど、ベクトル使ったほうがいい場合が多いので
そのへんも検討してみるといいかも。