2011-12-09 3 views
2

Если я использую переменную типа Int64, она будет работать на всех версиях Windows: win95, 98, 2000, nt, xp, vista, win7? Независимо от того, какая ОС 32-битная или 64-битная? И какой бы процессор они ни использовали?Поддерживается ли Int64 во всех версиях Windows?

Я просто хочу быть уверенным, что моя программа будет работать на всех версиях Windows.

+0

Вот аналогичная статья: http://stackoverflow.com/questions/4959032/file-size-calculation-int64-and-differences-between-32bit-and-64bit –

ответ

9

Размер данных, предоставляемых языком, не ограничен операционной системой или аппаратной платформой. Я могу иметь 64-битные целые числа на 32-разрядных платформах (или 16- или 8- или 11-разрядных, если на то пошло).

+0

Некоторые языки имеют типы данных, размер которых зависит от к целевой платформе. Действительно, Delphi делает, NativeInt. Кажется, я знаю, что вы имеете в виду, но это не ясно сформулировано. –

+0

Справедливая точка. Но в целом точность типов данных не имеет ничего общего с ОС. Для 64-битной математики 64-разрядная ОС не требуется. – Joe

+2

Действительно, произвольная точность математики может быть выполнена на очень примитивных машинах. Я думаю, что точка, которую вы делаете, заключается в том, что базовая платформа не ограничивает размер операндов, на которых можно работать. –

5

Int64 переменные поддерживаются 32-разрядным компилятором Delphi. Все операции над операндами Int64 будут давать одинаковые результаты независимо от того, на какой платформе (машине, ОС и т. Д.) Выполняется код.

На 32-битных платформах компилятор должен использовать специальные процедуры для выполнения 64-битной арифметики с использованием 32-битных машинных команд, которые доступны. При настройке 64-битной машины компилятор может использовать собственные 64-битные инструкции. Неважно, конечный результат не отличим от вас.

Обратите внимание, что если вы выполняете 32-разрядный исполняемый файл Delphi в 64-разрядной ОС, вы все равно будете использовать 32-разрядный эмулятор a.k.a. WOW64. С точки зрения исполняемого файла вы работаете на 32-битной машине. Если вы не используете новый 64-битный компилятор, представленный в XE2, вы будете создавать 32-разрядные исполняемые файлы.

2

64-разрядные целые числа отлично работают в 32-битной операционной системе. Производительность при использовании этих типов данных, однако, придет только при использовании кода, скомпилированного для 64-битной операционной системы - для этого вам понадобится Delphi XE2.

Между тем у вас есть возможность дополнительной емкости данных, но не дополнительная скорость выполнения (хотя это обычно не относится к большинству приложений).

+0

Чтобы уточнить, 64-битные целые числа не превосходят 32-битные целые числа, но собственные 64-битные целые числа быстрее, чем неродные 64-битные целые числа. –

+1

Это правильно, возможно, мое описание было недостаточно ясным. Чтобы быть более конкретным, операнды, которые превышают размер регистра центрального процессора, будут медленнее, чем те, которые этого не делают. Поэтому 64-разрядные целочисленные операции будут быстрее на 64-битных процессорах с 64-разрядными операционными системами (с 64-разрядным кодом), чем при выполнении в 32-разрядной системе, для чего потребуется больше операций (= больше циклов ЦП) для достижения того же результата. – Peter

Смежные вопросы