Если вы преобразуете (линейный) адрес в смещение страницы: вы хотите разделить адрес на размер страницы и принять целочисленный ответ в качестве страницы, а напоминание - в качестве смещения.
Это делается с использованием операторов целочисленного деления и модуля (MOD, "%") в вашем языке программирования.
Компьютер представляет адрес в виде числа, хранящегося в двоичных разрядах.
Вот пример адреса: 12 - это 1100 в двоичном виде.
Если размер страницы равен 3, то нам нужно рассчитать 12/3 и 12% 3, чтобы найти страницу и смещение (4: 0 соответственно).
Однако, если размер страницы равен 4 (степень 2), тогда 4 в двоичном виде равны 100, а целочисленное деление и модуль можно вычислить с помощью специальных «горячих клавиш»: вы можете разделить последние две двоичные цифры для деления, и вы можете оставить только две последние двоичные цифры для модуля. Итак:
12/4 == 12>>2
(сдвиг, чтобы удалить последние две цифры)
12%4 == 12&(4-1)
(4-1 = 3 является двоичным 11, а оператор '&' (AND) только сохраняет их)