I stumbled upon this answer regarding the utilization of the magic number 0x07EFEFEFF used for strlen's optimization, and here is what the top answer says:
Look at the magic bits. Bits number 16, 24 and 31 are 1. 8th bit is 0.
- 8th bit represents the first byte. If the first byte is not zero, 8th bit becomes
1at this point. Otherwise it's0.- 16th bit represents the second byte. Same logic.
- 24th bit represents the third byte.
- 31th bit represents the fourth byte.
However, if I calculate result = ((a + magic) ^ ~a) & ~magic with a = 0x100, I find that result = 0x81010100, meaning that according to the top answerer, the second byte of a equals 0, which is obviously false.
What am I missing?
Thanks!
Aucun commentaire:
Enregistrer un commentaire