Ответ 1
Вам не нужен 64-битный процессор для использования 64-битного типа данных. Все зависит от компилятора и только от компилятора. Компилятор может предоставить вам 128-битные, 237-битные или 803-битные типы данных, если это того пожелает.
Однако имейте в виду, что обычно 32-разрядные ЦП не могут обрабатывать 64-битные значения напрямую, что означает, что бремя поддержки всех необходимых языковых операций для 64-разрядного типа лежит на компиляторе и в библиотеке. Компилятор должен будет генерировать более или менее сложную последовательность 32-битных инструкций ЦП для выполнения дополнений, сдвигов, умножений и т.д. По 64-битным значениям. Это означает, что в коде, создаваемом для 32-разрядных ЦП, операции основного языка в 64-битных типах данных будут не такими эффективными, как в коде, генерируемом для 64-битных ЦП (так как в последнем большинстве языковых операций будет выполняться одна команда CPU).
"t" в int64_t
обозначает либо "тип", либо "typedef name". Это старое принятое соглашение об именах для типичных типов typedefs.
Что касается версий компилятора, на самом деле это двусмысленный вопрос. Имя typedef int64_t
является частью стандартной библиотеки языка C (но не языка С++), в то время как поддержка 64-разрядных целых типов (под любым именем) является частью компилятора. Итак, о ком вы спрашиваете? Например, компилятор MSVC долгое время поддерживал 64-битные типы данных, но имена для этих типов были разными. 64-разрядное целое число со знаком называется __int64
чего-то подобного в MSVC. Что касается int64_t
typedef, AFAIK, он не является частью стандартной библиотеки MSVC даже сегодня. Фактически, int64_t
стал частью языка C из версии спецификации C99. В то же время он не является частью языка С++. Таким образом, как правило, вы не должны ожидать, чтобы int64_t
в коде С++ независимо от версии компилятора.
Что касается длины данных... Ну, да, это просто удваивает количество бит. Остальное следует.