-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add explanation of converting between floating and fixed point #21
Conversation
d2f1794
to
b48a889
Compare
This is useful in many situations, like when generating fixed point constants, or when printing fixed point values for debugging (or non debugging) purposes. Also, fix some qualifiers (`extern` isn't needed, `const` is nice to use).
|
||
// 1 and 5/8, written verbosely for demonstration purposes | ||
int player_speed = 8 + 5; | ||
int player_speed = (1 << player_fp) + ((5 << player_fp) / 8); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this bitwise expanded a bit? Like shift 1 by 3 position will effectively multiply 1 for 2^3 and same for the 5/8
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is correct: 1 << 3
is 8, so the first part of the addition is correct. The second one is just 5 * 8 / 8
, but at least this way it's more clear that the intention is to have 5/8 in fixed point, rather than just a random 5.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or maybe I've misunderstood your suggestion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I wasn't discussing the correctness, just to expand a bit more explaining the shift
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see what you mean, but I'm not sure how to change the explanation to make it more clear. I think that the shift itself doesn't need to be understood as a multiplication, more like "making room for decimals".
In any case, if the rest of the PR is ok, we can merge it and that can be improved later, all I wanted with this change is explain a bit better where "5" was coming from, and now it's just using the general formula for any number, so...
Co-authored-by: Antonio Vivace <avivace4@gmail.com>
This is useful in many situations, like when generating fixed point
constants, or when printing fixed point values for debugging (or non
debugging) purposes.
Also, fix some qualifiers (
extern
isn't needed,const
is nice touse).