如何在恒定时间 O(1) 内下溢数字?
How can I underflow a number in constant time O(1)?
我想创建一个“数据类型”,它在恒定时间内产生下溢。
因此,如果您将 10
作为上限,并传递值 12
,它会为您提供 8
.
在下面的代码中,max
是我的值 val
的上限。
while(val > max)
val -= max;
目前我只有这个迭代代码,可以用模运算来表示。我就是不知道怎么办。
6
的示例
val = val % max
怎么了? (如果有的话,请给出更多的反例。)
更新:假设图像中的 Bound 与 max
变量相同,您似乎想要表达式 max - (val - 1) % (max + 1)
.
我想创建一个“数据类型”,它在恒定时间内产生下溢。
因此,如果您将 10
作为上限,并传递值 12
,它会为您提供 8
.
在下面的代码中,max
是我的值 val
的上限。
while(val > max)
val -= max;
目前我只有这个迭代代码,可以用模运算来表示。我就是不知道怎么办。
6
的示例
val = val % max
怎么了? (如果有的话,请给出更多的反例。)
更新:假设图像中的 Bound 与 max
变量相同,您似乎想要表达式 max - (val - 1) % (max + 1)
.