试图理解为什么页面大小是2的幂?

1 binary paging bit-manipulation

我看了这个:

回想一下,通过将地址分解为页面和偏移号来实现分页.将地址分成X页位和Y偏移位是最有效的,而不是对地址执行算术来计算页码和偏移量.因为每个位位置表示2的幂,所以在位之间分割地址导致页面大小为2的幂.

我不太明白这个答案,有人能给出一个更简单的解释吗?

Wil*_*ill 16

如果要将(线性)地址转换为page:offset,则需要将地址除以页面大小,并将整数答案作为页面,将提醒作为偏移量.

这是使用编程语言中的整数除法和模数(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)运算符只保留那些)