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.

Tags:

Go