Основная идея, конечно же, в виде двоичных чисел. Но есть много деталей, которые усложняют вещи. Это зависит от аппаратного обеспечения и компилятора.
Я использовал компиляторы, которые представляли целые числа в каждом из упомянутых здесь способов.
Один из возможных способов представления вещей - просто создать наибольшее двоичное целое число, которое вы можете. С 64 битами и одним битом назад для знака вы получаете 2 до степени 64 минус 1 или чуть более 1,8 x 10 ^ 19.
Если вы хотите сделать сложение и вычитание, это нормально. Но умножение утомительно, потому что вам нужно сделать одно умножение для каждого бита. Там вам могут помочь плавающие сопроцессоры.
Некоторое оборудование будет поддерживать интересные функции, поэтому его использование полезно. Например, некоторые микросхемы ЦП будут поддерживать двоично-десятичное число.
https://en.wikipedia.org/wiki/Binary-coded_decimal
Если вы достаточно взрослый, чтобы помнить Z80, это первый процессор, который я когда-либо использовал, с BCD.
https://en.wikipedia.org/wiki/Zilog_Z80
Это означает, что вам нужно выполнять двоичные операции только на 4-битном уровне, поскольку каждая цифра вашего десятичного числа отделена от других цифр. Если оборудование поддерживает это напрямую, вы можете избежать написания кода для преобразования всех 64 битов в целое и десятичное. Это не так эффективно. С 64 битами и пропуском одного для знака вы получите только 15 цифр.
Опять сложить и вычесть несложно. Умножение становится вопросом реализации двузначного умножения в двоичном виде с последующим включением переноса для результатов более 10.
Разное оборудование будет поддерживать вещи по-разному. Существует вопрос о порядке байтов от младшего к младшему.
https://chortle.ccsu.edu/AssemblyTutorial/Chapter-15/ass15_3.html
Есть много других возможностей на эзотерическом оборудовании.