我正在猜测ARM中的数字游戏以了解更多信息。 但我被困在随机数代...... 我调用rand()但我不知道怎么做modulo 100来生成0-100范围内的数字。 我不认为ARM中存在模数,而“和r0,r0,#100”不是很随机......
以下是伪随机数生成的开始:
mov r0, #0
bl time
bl srand
bl rand
答案 0 :(得分:1)
只有当你感兴趣的余数来自功能为2的除法时,AND才有效。你可以做的一件事就是使用一个这样的值而不是100。
另一种选择就是使用余数定理:
a % 100 = a - (100 * int(a/100))
这也是gcc所做的事情(尽管它实际上避免了用名称reciprocal multiplication将除以100;如果你的ARM支持整数除法指令,那么你就是{ {3}})。