如何在恒定时间 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 怎么了? (如果有的话,请给出更多的反例。)

更新:假设图像中的 Boundmax 变量相同,您似乎想要表达式 max - (val - 1) % (max + 1).