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

fix: color bitmask calculation #190

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jetjinser
Copy link
Contributor

Consider the following code: let mask = !(0xF0 >> (pos % 2));

In this code, 0xF0 represents the binary value 0b11110000. When pos is even, (pos % 2) equals 0. Therefore, the right shift operation on 0b11110000 by 0 does not change the value, resulting in mask = 0b00001111.
However, when pos is odd, (pos % 2) equals 1. In this case, the right shift operation on 0b11110000 by 1 results in 0b01111000, which is incorrect.

To fix this issue, modify the code to let mask = !(0xF0 >> (pos % 2) * 4);.

With this modification, when pos is even, (pos % 2) equals 0, and the right shift operation by 0 * 4 = 0 does not change the value, resulting in mask = 0b00001111.

Similarly, when pos is odd, (pos % 2) equals 1, and the right shift operation by 1 * 4 = 4 correctly results in 0b00001111, giving mask = 0b11110000.

@auto-assign auto-assign bot requested a review from caemor February 4, 2024 08:17
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