,以及向上取整
向下取整:
讲道理: 比如对x向下取整, x>=0 那么就是 取得不大于x的最大整数, 相反也就是说, 小于x的遇到的第一个整数
比如 x = 5
那么向下取整则是4
不大于5...,那么就是小于5, 然后遇到的最大整数,也就是4
向上取整:
同理,向上取整则是 不小于x的最大整数...., 然后也可以 a - b + 1 / b 向上取整
我们实验一下,
代入得到
17 - 8 + 1 / 8 =
10 / 8 = 1.25 转化为后面的公式,向上取整则是2了....然后 add eax,edx 被除数 + 上 and过后的值.
最后右边移动三位.
这里编译器巧妙的利用 cdq符号扩展,然后利用了公式,进行了无分支判断....如果我们的被除数是正数,那么 符号扩展之后,edx的值则全部是0,然后and过后,结果还是0
那么我们的被除数 + 0 右移3位 然后向下取整.