On Saturday, 10 September 2022 at 02:22:53 UTC, Walter Bright wrote:
>Hex values are far easier to read, too.
“easier to read” is not “easier to comprehend”.
Comprehensibility really depends on the use-case.
But if we assume one’s working with binary flags or something similar (which probably was the reason to use binary literals in the first place), why would we write them in a different notation?
To give an example:
I can’t translate hex literals to their binary form in my head (in reasonable time).
And I never even had to do so – except for an exam or two at school.
Wanna know how I did it? – I wrote down the 0=0000
…1=0001
…F=1111
table…
I understand that “I’ve written binary literals in hexadecimal form since 30 years” is a reasonable point of view. But that doesn’t really help anyone who doesn’t have the strong mental connection between them and their binary meaning.
Writing binary literals using “bitshifting” notation in C didn’t provide great readability either. (We did so in the microcontroller programming course at school.)
But I’d consider (1 << 7) | (1 << 1)
way more comprehensible than 0x82
.
On the contrary, if our use case is RGB channels (where the individual binary bits don’t matter and we instead think in “whole” numbers), of course it would be inconvenient to use binary literals here. (As always: use the right tool for the job!)
>Have you ever put the tip of your pencil on the screen to count the number of 1's? I have.
No, I haven’t.
Thankfully numeric literals are group-able using underscores (in D and binary ones in PHP at least).
I actually find myself rather counting digits of decimal number literals (when not using D of course or in real life).
Well, I have to admit I haven’t had to deal with code “abusing” binary literals so far…