Если нет более крупного типа, вам нужно либо найти библиотеку стилей big-int, либо разобраться с ней вручную, используя длинное умножение.
Например, предположим, что a
и b
являются 16-битными. Затем вы можете переписать их как a = (1<<8)*aH + aL
и b = (1<<8)*bH + bL
(где все отдельные компоненты являются 8-битными числами). Тогда вы знаете, что общий результат будет:
(a*b) = (1<<16)*aH*bH
+ (1<<8)*aH*bL
+ (1<<8)*aL*bH
+ aL*bL
Каждый из этих 4 компонентов будет соответствовать 16-битному регистру. Теперь вы можете выполнить, например, сдвиг вправо на каждом из отдельных компонентов, будьте осторожны, чтобы правильно обращаться с переносками.