Skip to content
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

Merged
merged 3 commits into from
Mar 24, 2024

Conversation

AntonioND
Copy link
Member

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).

@AntonioND AntonioND force-pushed the fixed2float branch 2 times, most recently from d2f1794 to b48a889 Compare March 20, 2024 22:52
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);
Copy link
Sponsor Member

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

Copy link
Member Author

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.

Copy link
Member Author

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.

Copy link
Sponsor Member

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

Copy link
Member Author

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...

content/fixed-point-math.md Outdated Show resolved Hide resolved
content/fixed-point-math.md Outdated Show resolved Hide resolved
AntonioND and others added 2 commits March 23, 2024 13:31
Co-authored-by: Antonio Vivace <avivace4@gmail.com>
@avivace avivace merged commit 4b37aed into main Mar 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants