Two's complement and fmt.Printf
I believe the answer lies in how the fmt
module formats binary numbers, rather than the internal format.
If you take a look at fmt.integer
, one of the very first actions that the function does is to convert the negative signed integer to a positive one:
165 negative := signedness == signed && a < 0
166 if negative {
167 a = -a
168 }
There's then logic to append -
in front of the string that's output here.
IOW -101
really is -
appended to 5
in binary.
Note: fmt.integer
is called from pp.fmtInt64
in print.go, itself called from pp.printArg
in the same function.