Я пытаюсь создать 32-битные адреса в C путем объединения нескольких значений типа unsigned int, которые у меня есть. Эти множественные значения важны и должны храниться в 1 32-битном адресе.
Например: скажем, у меня есть unsigned int outer = 25
, unsigned int inner = 984
, unsigned int offset = 3241
. Внешний int имеет 10 старших битов в 32-битном адресе, внутренний int имеет 10 средних битов в 32-битном адресе, а смещение имеет оставшиеся 12 битов для хранения своего номера.
Это будет выглядеть примерно так:
OUTER | INNER | OFFSET
10 10 12 = 32 bit address
Я знаю, что в этом примере внешние и внутренние целые числа могут хранить значения от 0 до 2 ^ 10-1, а смещение может хранить значения от 0 до 2 ^ 12-1, но с этими значениями я не уверен, как разделить их по количеству бит, которые они могут иметь в пределах 32-битного адреса, а затем подделать / объединить все в целый адрес.