Для протоколов хранения или сетевых протоколов все может быть во всех видах форматов, в зависимости от того, что лучше всего хранить данные и насколько оптимизированными, по мнению программистов, это должно быть. Вы можете найти некоторые дурацкие форматы; например, протокол, который я написал несколько месяцев назад, имел бит знака как наименее значимый бит с кодировкой base64. Таким образом, отрицательные целые числа не занимают чрезмерных байтов, если они на самом деле не являются очень большими числами, в то время как дополнение к двум заполняет весь размер поля "-1". По этой причине Google Protocol Buffers делает то же самое, используя кодировку ZigZag для чисел со знаком.
Что касается более прямого ответа на вопрос: для каждодневных обычных современных вычислений, дополняет два, безусловно, является наиболее распространенным внутренним представлением для целых чисел. Я знаю, что на большинстве компьютеров есть специальные флаги и инструкции для размещения арифметики дополнения Two, такие как флаг «переносить» для обнаружения переполнений и флаг «подписывать» для обнаружения, если в результате установлен самый старший бит.
С числами с плавающей запятой дела обстоят немного сложнее, хотя IEEE 754 кажется наиболее распространенным для вычислений. Мои арифметические знания с плавающей запятой довольно устарели, так что мы приветствуем любые исправления. В последний раз я проверял (как 10 лет назад), что современные FPU используют «реальную» точность во время вычислений - в том смысле, что их регистры имеют 80-битный формат, а затем при хранении данных или получении результатов из FPU они преобразуются в одиночные или двойная точность (32 или 64 бита) в зависимости от программы.
Усовершенствованное современное программное обеспечение на современных процессорах также имеет доступ к более мощным операциям с плавающей запятой (SIMD - Multiple Data с одной инструкцией), предназначенным для работы с векторами или другой сложной математикой, где требуется много обработки данных (фильтры изображений, аудиокодеки, процедурная генерация и т. д.), но используемые здесь регистры - это всего лишь несколько множественных экземпляров общих форматов с плавающей точкой или целых чисел.
Как указано в комментариях, инструкции SIMD становятся все более популярными в наши дни среди операций с плавающей запятой. Они гораздо более мощные с точки зрения производительности, и почти каждый процессор в наши дни (в мире ПК / архитектура x86) имеет доступ к минимум набору инструкций SSE2 (датированный 2000 годом / Pentium 4) , Я не думаю, что программное обеспечение склоняется к точности по сравнению с производительностью, и все, что действительно требует высокоточных вычислений, вероятно, все равно использует пользовательскую арифметику (например, банковское программное обеспечение не использует операции с плавающей запятой, поэтому они не теряют доли копеек из-за ошибок округления - или, что более важно, любые пенни, потерянные или полученные в результате округления, одинаковы для всех машин).