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)运算符只保留那些)