Узнать самый большой собственный целочисленный тип на текущей платформе

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

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

Всегда используйте long: Хотя верно, что на нескольких платформах длинные целые числа составляют 4 байта или 8 байтов в зависимости от архитектуры (моя система является одним из таких примеров), некоторые компиляторы реализуют длинные целые числа как 4 байта даже в 64-битных системах.

Всегда используйте длинные целые числа. длинный: Во многих 32-битных системах это 64-битное целое число, которое может быть не таким эффективным (хотя, вероятно, более эффективным, чем любой код, который я пишу). Настоящая проблема заключается в том, что он может вообще не поддерживаться на некоторых архитектурах (например, на той, на которой работает мой mp3-плеер).

Подчеркну, мой код не заботится о том, каков фактический размер целого числа, если оно был выбран (он полагается на sizeof () для всего, что имеет значение). Я просто хочу, чтобы он выбрал тип целого числа, при котором мой код будет наиболее эффективным.

11
задан Collin 22 September 2012 в 04:33
поделиться