首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模算子与零(re: arc4random_uniform源)

模算子与零(re: arc4random_uniform源)
EN

Stack Overflow用户
提问于 2015-05-28 14:15:08
回答 1查看 126关注 0票数 7

我发现自己正在查看arc4random_uniform源代码(uniform.c)

我的问题涉及以下几行(该评论是他们最初的评论):

代码语言:javascript
复制
/* 2**32 % x == (2**32 - x) % x */
min = -upper_bound % upper_bound;

现在,我不是数学天才,但是-N%N肯定总是等于零。所以为什么不直接写

代码语言:javascript
复制
min=0
EN

回答 1

Stack Overflow用户

发布于 2015-05-28 14:30:29

首先,值得一提的是,变量是uint32_t,因此没有签名。然后让我们仔细看看:-upper_bound % upper_bound = (-upper_bound) % upper_bound;。这意味着-upper_bound实际上是upper_bound的2的补充。假设是upper_bound=10,那么-upper_bound就是0xFFFFFFF6=246。然后是-upper_bound % upper_bound = 246%10 = 6。你可以试一试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30509165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档