Это не 18-значный git адрес - он состоит только из 16 цифр. Префикс 0x
просто указывает на то, что то, что следует после него, будет в шестнадцатеричной форме. Другая обычно используемая нотация для шестнадцатеричных целых чисел: h
(или иногда x
, например, в VHDL) либо с префиксом, либо с постфиксом (например, hCD9D1CF504
, h'CD9D1CF504
или CD9D1CF504h
) - обратите внимание, что это довольно неясно, если только шестнадцатеричные цифры AF являются заглавными).
Один шестнадцатеричный знак di git представляет 4 бита, поэтому указатель имеет размер 4 * 16 = 64 бита. Другими словами, исполняемый вашим компилятором двоичный исполняемый файл является 64-разрядным, в то время как двоичный файл учебного пособия, вероятно, был 32-разрядным, как указано @Hawky в комментариях.
Чтобы полностью понять разницу между 32- битный и 64-битный код, вам придется изучить архитектуру компьютера, в частности, x86-64. Тем не менее, будьте осторожны - если вы решите go по этому пути, подготовьтесь к жизни, наполненной болью и страданием (самое худшее, что вы можете просто наслаждаться этим).