количество битов в данном случае соответствует размеру адресов памяти, используемых компьютером.
32-битный адрес памяти системы может указывать на срок до 2^32 (4294967296) разных ячейках памяти (то есть именно 4 ГБ памяти), а 64-битные могут обратиться может до 2^64 места (~16 трлн ГБ).
почему 64-разрядная программа не может работать на 32-разрядной копии Windows?
32-разрядной программы магазинов в различных населенных пунктах, где она хранится свои данные в 32 битах. И так как можно хранить 32-бит в 64-битной памяти, Windows будет счастливо запустить программу при заполнении других 32-бит 64-бит соответственно.
64-разрядная программа на otherhand использует 64-разрядные для указания местоположений. Поскольку невозможно хранить 64-разрядные версии в 32-разрядном хранилище, не выбрасывая половину, Windows откажется запускать 64-разрядную программу на 32-разрядном компьютере.
есть ли в программе часть код, сообщающий Windows, что это 64-разрядная программа, или Windows просто не может ее выполнить?
Каждая программа имеет заголовок, который сообщает Windows, все, что она должна знать о том, как запустить программу, в том числе, если это 32-разрядное приложение или 64-разрядное приложение.
я увидел значительную разницу в размере файлов двух версий одной и той же программы, поэтому я думаю, что это код, который отличается. Можно ли модифицировать код и сделать программу бежать?
64 бита занимают дважды объем памяти как 32 бита. Поэтому 64-битные программы больше своих 32-битных аналогов.
эти ячейки памяти составляют только часть программы; большинство из них являются инструкциями (которые остаются того же размера) и такими вещами, как текст и значки. Поскольку только ячейки памяти удваиваются по размеру, 64-разрядная версия программы только немного больше, чем удвоение размера.
надеюсь, что это помогает.