On Monday, 27 December 2021 at 06:55:37 UTC, Rumbu wrote:
>When people are dumping numbers to strings în any other base than 10, they are expecting to see the internal representation of that number. Since the sign doesn't have a reserved bit in the representation of integrals (like it has for floats), for me it doesn't make any sense if I see a negative sign before a hex, octal or binary value.
However, binary uses the most significant digit to identify if the number is positive or negative. I suppose that if you want to not "show" a digit when converting to "hex" and "octal", you could first convert to binary (signed) and then convert this number to "hex" or "octal" but still, these system are used for specific purposes and they don't have a real negative representation so it still doesn't make sense no matter how you see it.
>The trickiest value for integrals is the one with the most significant bit set (e.g. 0x80). This can be -128 for byte, but also 128 for any other type than byte. Now, if we go the other way around and put a minus before 0x80, how do we convert it back to byte? If we assume that 0x80 is always 128, -0x80 will be -128 and can fit a byte. On the other side, you cannot store +0x80 in a byte because is out of range.
Yeah, this is why I think that showing the sign is actually a good way to show that it is a signed negative number. If there is no sign, the number can be either positive signed number or unsigned. In the end, a "string" will only be used to print the number to a user so there will be no confusion to the programmers themselves
>This is also an issue în phobos:
https://issues.dlang.org/show_bug.cgi?id=20452
https://issues.dlang.org/show_bug.cgi?id=18290
Yeah, I can see why, lol!