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