Pointers were insanely difficult for me to grok when I first encountered them in college. I think it was because of these two things:
1. I didn't have a proper education on how things are stored in memory, and what the process of dereferencing is actually doing.
2. C syntax for pointer operations was, and is, poorly designed. It's never seemed intuitive to me, making it much harder to understand what it's actually intended to do.
I don't know enough C for this...is that bitshifted value on the right being cast to a type that's a union of a float and uint32? And then 496 is subtracted?