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