zs2*_*020 12
Case1 assume m = kn+b (b<n),
left = (m/n)/l = ((kn+b)/n)/l = (k+b/n)/l = k/l (b/n=0, because b<n)
right = (kn+b)/(n*l) = k/l + b/(n*l) = k/l (b/(n*l)=0, because b<n)
=> left = right
Case2 assume m = kn,
left = (m/n)/l = (kn/n)/l = k/l
right = kn/(n*l) = k/l
=> left = right
So, (m/n)/l == m/(n*l)
Run Code Online (Sandbox Code Playgroud)
你在谈论数学整数吗?或编程语言中的固定宽度整数?
这两个方程与数学整数相同,但如果使用固定宽度整数,则这两个函数具有不同的溢出行为.
例如,假设整数是32位
(1310720000/65536)/65537 = 20000/65537 = 0
Run Code Online (Sandbox Code Playgroud)
但是,65536*65537将溢出32位整数,并且将等于65536,所以
1310720000/(65536*65537) = 1310720000/65536 = 20000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |