**
读csapp随笔
**
https://img-blog.csdnimg.cn/20190808012253248.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzODE2NTIx,size_16,color_FFFFFF,t_70)
如书中内容截图,对于位移量过大时,实际位移量通过logw 和 k mod w 确定的问题中,
logw 和 k mod w求法等价的问题,作一个数学上的简短说明,未必正确,只是简单阐述一下观点。
这里的logw应该需要向下取整,书中大概是给出省略取整的写法。
证明过程:
w假设有n位,w可以近似取2^n(位移量需要被加以周期性的限制大概是因为会在某些时候扩大被位移的数的位数),
那实际位移量可以取k的低log2^n=n位,这样位移量一定不会超过w-1。
k写成二进制是[am-1am-2...an-1...a0]
k=2^k-1 * am-1 + ... + an-1 * 2^n-1 + a0
位移量u=an-1 * 2^n-1 + ... + a0
所以
k=2^k-1 * am-1 + ... + 2^n * an + u = k1+u
w=2^n-1 * wn-1 + ... + w0 = u
k mod w=k1+u mod u = u(k1 + u > u)
实际位移量取k的低n位就是u,也是k除w的余数
参考书籍 《深入理解计算机系统》中文第三版